Condividi tramite


Modifica dei dati tramite un cursore

Le API ADO, OLE DB e ODBC supportano l'aggiornamento della riga su cui l'applicazione è posizionata in un set di risultati. I passaggi principali del processo sono i seguenti:

  1. Associare le colonne del set di risultati a variabili di programma.
  2. Eseguire la query.
  3. Eseguire le funzioni o i metodi API per posizionare l'applicazione in una riga del set di risultati.
  4. Inserire nelle variabili di programma associate i valori dei dati per le colonne da aggiornare.
  5. Chiamare una delle funzioni o dei metodi seguenti per inserire la riga:
    • In ADO, chiamare il metodo Update dell'oggetto Recordset.
    • In OLE DB, chiamare il metodo SetData dell'interfacciaIRowsetChange.
    • In ODBC, chiamare la funzione SQLSetPos con l'opzione SQL_UPDATE.

Quando si utilizza un cursore del server Transact-SQL, è possibile aggiornare la riga corrente tramite un'istruzione UPDATE che include una clausola WHERE CURRENT OF. Le modifiche apportate tramite la clausola verranno applicate solo alla riga in cui è posizionato il cursore. Se un cursore è basato su un join, viene modificato solo il valore table_name specificato nell'istruzione UPDATE. Le altre tabelle interessate dal cursore rimangono invariate.

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

Per ulteriori informazioni sui join, vedere Nozioni fondamentali sui join.

Vedere anche

Concetti

Modifica di dati con l'istruzione UPDATE
Modifica di dati di tipo ntext, text o image

Altre risorse

UPDATE (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005