Alterando dados usando um cursor
As APIs ADO, OLE DB e ODBC oferecem suporte à atualização da linha atual na qual um aplicativo está posicionado em um conjunto de resultados. As etapas seguintes descrevem o processo fundamental:
Associe as colunas do conjunto de resultados para programar variáveis.
Execute a consulta.
Chame funções ou métodos de API para posicionar o aplicativo em uma linha dentro do conjunto de resultados.
Preencha as variáveis de programa associadas com novos valores de dados qualquer coluna a ser atualizada.
Chame uma dessas funções ou métodos para inserir a linha:
No ADO, chame o método Update do objetoRecordset.
No OLE DB, chame o método SetData da interfaceIRowsetChange.
No ODBC, chame a função SQLSetPos com a opção de SQL_UPDATE.
Quando você usar um cursor de servidor Transact-SQL, você pode atualizar a linha atual usando uma instrução UPDATE que inclui uma cláusula WHERE CURRENT OF. As mudanças realizadas com essa cláusula afetam só a linha na qual o cursor é posicionado. Quando um cursor estiver baseado em uma junção, só o table_name especificado na instrução UPDATE é modificado. Outras tabelas que participam do cursor não são afetadas.
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
Para obter mais informações sobre junções, consulte Conceitos básicos de junção.
Consulte também