Esecuzione di istruzioni di eliminazione e aggiornamento posizionato

Importante

Questa funzionalità verrà rimossa nelle versioni future di Windows. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Microsoft consiglia di usare la funzionalità cursore del driver.

Dopo che un'applicazione ha recuperato un blocco di dati con SQLFetchScroll, può aggiornare o eliminare i dati nel blocco. Per eseguire un aggiornamento o un'eliminazione posizionata, l'applicazione:

  1. Chiama SQLSetPos per posizionare il cursore sulla riga da aggiornare o eliminare.

  2. Costruisce un'istruzione di aggiornamento o eliminazione posizionata con la sintassi seguente:

    UPDATE Nome della tabella

    SETIdentificatore =di colonna {espressione | NULL}

    [,= di colonna { | NULL}]

    DOVE CORRENTE DELNOME cursore

    DELETE DAnome della tabellaDOVE IL NOME DEL CURSORE CORRENTE

    Il modo più semplice per costruire la SET clausola in un'istruzione positioned update è utilizzare marker parametri per ogni colonna da aggiornare e usare SQLBindParameter per associarli ai buffer del set di righe per la riga da aggiornare. In questo caso, il tipo di dati C del parametro sarà uguale al tipo di dati C del buffer del set di righe.

  3. Aggiorna i buffer del set di righe per la riga corrente se eseguirà un'istruzione update posizionata. Dopo aver eseguito correttamente un'istruzione update posizionata, la libreria di cursori copia i valori da ogni colonna della riga corrente nella cache.

    Attenzione

    Se l'applicazione non aggiorna correttamente i buffer del set di righe prima di eseguire un'istruzione di aggiornamento posizionato, i dati nella cache non saranno corretti dopo l'esecuzione dell'istruzione.

  4. Esegue l'istruzione update o delete posizionata utilizzando un'istruzione diversa rispetto all'istruzione associata al cursore.

    Attenzione

    La clausola WHERE costruita dalla libreria di cursori per identificare la riga corrente non può identificare le righe, identificare una riga diversa o identificare più righe. Per altre informazioni, vedere Costruzione di istruzioni di ricerca.

Tutte le istruzioni di aggiornamento ed eliminazione posizionate richiedono un nome di cursore. Per specificare il nome del cursore, un'applicazione chiama SQLSetCursorName prima dell'apertura del cursore. Per usare il nome del cursore generato dal driver, un'applicazione chiama SQLGetCursorName dopo l'apertura del cursore.

Dopo che la libreria di cursori esegue un'istruzione di aggiornamento o eliminazione posizionata, la matrice di stato, i buffer dei set di righe e la cache gestiti dalla libreria di cursori contengono i valori illustrati nella tabella seguente.

Istruzione utilizzata Valore nella matrice di stato della riga Valori in

buffer di set di righe
Valori in

buffer della cache
Aggiornamento posizionato SQL_ROW_UPDATED Nuovi valori[1] Nuovi valori[1]
Eliminazione posizionata SQL_ROW_DELETED Valori precedenti Valori precedenti

[1] L'applicazione deve aggiornare i valori nei buffer del set di righe prima di eseguire l'istruzione update posizionata; dopo l'esecuzione dell'istruzione update posizionata, la libreria di cursori copia i valori nei buffer del set di righe nella cache.