通过使用游标更改数据

ADO、OLE DB 和 ODBC API 支持更新结果集中应用程序所在的当前行。以下步骤说明了基本的过程:

  1. 将结果集列与程序变量绑定。
  2. 执行查询。
  3. 调用 API 函数或方法,将应用程序定位到结果集的某一行。
  4. 对于要更新的任何列,使用新数据值填充绑定程序变量。
  5. 调用下列一个函数或一种方法来插入行:
    • 在 ADO 中,调用 Recordset 对象的 Update 方法。
    • 在 OLE DB 中,调用 IRowsetChange 接口的 SetData 方法。
    • 在 ODBC 中,调用带有 SQL_UPDATE 选项的 SQLSetPos 函数。

如果您使用的是 Transact-SQL 服务器游标,则可以通过使用包含 WHERE CURRENT OF 子句的 UPDATE 语句更新当前行。使用此子句所做的更改只影响游标所在的行。如果游标基于某个联接,则只修改 UPDATE 语句中指定的 table_name。而不影响其他参与该游标的表。

USE AdventureWorks;
GO
DECLARE complex_cursor CURSOR FOR
    SELECT a.EmployeeID
    FROM HumanResources.EmployeePayHistory AS a
    WHERE RateChangeDate <> 
         (SELECT MAX(RateChangeDate)
          FROM HumanResources.EmployeePayHistory AS b
          WHERE a.EmployeeID = b.EmployeeID) ;
OPEN complex_cursor;
FETCH FROM complex_cursor;
UPDATE HumanResources.EmployeePayHistory
SET PayFrequency = 2 
WHERE CURRENT OF complex_cursor;
CLOSE complex_cursor;
DEALLOCATE complex_cursor;
GO

有关联接的信息,请参阅联接基础知识

请参阅

概念

通过使用 UPDATE 更改数据
更改 ntext、text 或 image 数据

其他资源

UPDATE (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助