Che cosa è un cursore in TSQL?

August 28

Che cosa è un cursore in TSQL?


Transact-SQL, o T-SQL in breve, è una estensione di standard SQL - un linguaggio di programmazione progettato per la gestione dei dati in database relazionali - attuate da Microsoft, nel suo prodotto di SQL Server, Sybase e, nel suo prodotto Adaptive Server Enterprise . In un database relazionale, i dati vengono memorizzati in tabelle di righe e colonne. In T-SQL, un cursore è una struttura di controllo di nome utilizzato da un programma applicativo per puntare a una riga di dati.

Posizionare il cursore

Un cursore è associato ad una dichiarazione, nota come un'istruzione SELECT, che interroga il database e recupera zero o più righe da una o più tabelle di database in base ai criteri specificati. Un cursore è costituito da un insieme di righe risultanti dall'esecuzione dell'istruzione SELECT associato con il cursore e la posizione del cursore, che è un puntatore a una riga con il set di risultati.

Dichiarazione

In T-SQL, gli attributi di un cursore, tra cui la query utilizzata per costruire il set di risultati su cui opera il cursore, sono definiti da un'istruzione DECLARE CURSOR. L'istruzione DECLARE CURSOR crea la struttura cursore e compila e memorizza la query associata con il cursore, ma non esegue la query.

Apertura e Recupero

L'istruzione DECLARE CURSOR è seguita da un'istruzione OPEN, che apre il cursore o, in altre parole, esegue operazioni di base - come bloccaggio di una tabella di database, in modo che non può essere utilizzato o modificato applicazioni concorrenti - che consentono la query associato al cursore da eseguire. L'istruzione OPEN restituisce un set di risultati e un FETCH comando esegue il cursore compilato e restituisce una o più righe dal set di risultati. Il FETCH comando sposta la posizione corrente del cursore verso il basso il set di risultati da una o più righe alla volta.

Chiusura

Dopo aver recuperato una fila di dati in base alla query associata con il cursore, ciò che rimane è quello di esaminare, aggiornare o eliminare la riga con il cursore. Aggiornare e cancellare le operazioni sono opzionali, ma in ogni caso si applicano solo al riga di dati alla posizione corrente del cursore dopo un recupero. Si noti che non è possibile utilizzare un cursore per inserire righe in una tabella del database. Durante l'elaborazione su tutte le righe appropriate nel set di risultati è completo, un comando di chiusura viene utilizzato per chiudere il set di risultati, rimuovere tutte le tabelle temporanee e rilasciare le risorse stanziate per la struttura del cursore. Il comando CLOSE può, infatti, essere eseguito in qualsiasi momento, senza elaborare l'intero set di risultati.