科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道教你快速的掌握如何使用定位操作更改行

教你快速的掌握如何使用定位操作更改行

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

可更新游标支持通过游标更新行的数据修改语句。当定位在可更新游标中的某行上时,您可以执行更新或删除操作,这些操作针对用于在游标中建立当前行的基表行。这些就称为定位更新。

作者:赛迪网 shuijing 来源:天新网 2008年3月27日

关键字: SQL Server SQL Mssql 数据库

  • 评论
  • 分享微博
  • 分享邮件

可更新游标支持通过游标更新行的数据修改语句。当定位在可更新游标中的某行上时,您可以执行更新或删除操作,这些操作针对用于在游标中建立当前行的基表行。这些就称为定位更新。

定位更新在打开游标的同一个连接上执行。这就允许数据修改共享与游标相同的事务空间,并且使游标保持的锁不会阻止更新。

有两种方法在游标中执行定位更新:

◆UPDATE 或 DELETE 语句中的 Transact-SQL WHERE CURRENT OF 子句。

◆数据库 API 定位更新函数或方法,如 ODBC SQLSetPos 函数。

使用 Transact-SQL 执行定位更新:Transact-SQL WHERE CURRENT OF 子句典型用于 Transact-SQL 存储过程、触发器以及脚本(当需要根据游标中特定行进行修改时)。存储过程、触发器、或脚本将:

DECLARE 和 OPEN 游标。

用 FETCH 语句在游标中定位于一行。

用 WHERE CURRENT OF 子句执行 UPDATE 或 DELETE 语句。用 DECLARE 语句中的 cursor_name 作为 WHERE CURRENT OF 子句中的 cursor_name。

使用 API 执行定位更新:因为通过 OLE DB、ADO 和 DB-Library API 函数和方法创建的游标没有名称,所以它们不能在 WHERE CURRENT OF 子句里使用。然而,ODBC 支持使用 SQLGetCursorName 函数为 API 服务器游标得到名称。在设置游标特性并通过执行 Transact-SQL 语句打开游标后,可使用 SQLGetCursorName 函数得到游标的名称。在游标中定位后,引用由 SQLGetCursorName 返回的名称执行带有 WHERE CURRENT OF 子句的 UPDATE 或 DELETE 语句。但不建议使用此方法。最好使用 ODBC API 中的定位更新函数。

数据库 API 支持两种不同的方法对API 服务器游标执行定位操作。ODBC 和 DB-Library 共享一个模型,OLE DB 和 ADO 共享另一个。

在 ODBC 和 DB-Library 中,将游标中的列与程序变量绑定,然后在游标中定位到特定行。如果执行定位更新,在程序变量中将数据值更改为新值。调用这些函数以执行定位操作:

◆ODBC:SQLSetPos 函数

◆DB-Library:dbcursor 函数

这些函数具有下列选项:

SQLSetPos(SQL_POSITION)

仅用于 ODBC,将 ODBC 游标定位到当前行集中的特定行。

SQLSetPos(SQL_REFRESH)、dbcursor(CRS_REFRESH)

使用游标当前所定位行的值刷新被绑定到结果集列上的程序变量。

SQLSetPos(SQL_UPDATE)、dbcursor(CRS_UPDATE)

使用绑定到结果集列上的程序变量中所存储的值来更新游标中的当前行。

SQLSetPos(SQL_DELETE)、dbcursor(CRS_DELETE)
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章