Riepilogo: in questo tutorial imparerai come utilizzare il cursore SQL Server per elaborare un set di risultati, una riga alla volta.
SQL funziona in base a un set, ad esempio, listruzione SELECT
restituisce un insieme di righe chiamato set di risultati. Tuttavia, a volte, potresti voler elaborare un set di dati riga per riga. È qui che entrano in gioco i cursori.
Che cosè un cursore di database
Un cursore di database è un oggetto che consente lattraversamento delle righe di un set di risultati. Consente di elaborare singole righe restituite da una query.
Ciclo di vita del cursore di SQL Server
Questi sono i passaggi per lutilizzo di un cursore:
Innanzitutto, dichiara un cursore.
Code language: SQL (Structured Query Language) (sql)
Per dichiarare un cursore, specificarne il nome dopo la parola chiave DECLARE
con il tipo di dati CURSOR
e fornire un SELECT
che definisce il set di risultati per il cursore.
Successivamente, apri e popola il cursore eseguendo SELECT
istruzione:
Code language: SQL (Structured Query Language) (sql)
Quindi, recupera una riga dal cursore in una o più variabili:
Code language: SQL (Structured Query Language) (sql)
SQL Server fornisce la funzione @@FETCHSTATUS
che restituisce lo stato dellultima istruzione FETCH
eseguita sul cursore; Se @@FETCHSTATUS
restituisce 0, significa che listruzione FETCH
ha avuto esito positivo. Puoi utilizzare listruzione WHILE
per recuperare tutte le righe dal cursore come mostrato nel codice seguente:
Code language: SQL (Structured Query Language) (sql)
Dopodiché, chiudi il cursore:
Code language: SQL (Structured Query Language) (sql)
Infine, dealloca il cursore:
Code language: SQL (Structured Query Language) (sql)
Esempio di cursore di SQL Server
Useremo la tabella prodution.products
dal database di esempio per mostrarti come utilizzare un cursore:
Innanzitutto, dichiara due variabili per contenere il nome del prodotto e il prezzo di listino e un cursore per contenere il risultato di una query che recupera il nome del prodotto e il prezzo di listino dalla tabella production.products
:
Successivamente, apri il cursore:
Code language: SQL (Structured Query Language) (sql)
Quindi, recupera ogni riga dal cursore e stampa il nome del prodotto e il prezzo di listino:
Dopodiché chiudi il cursore:
Code language: SQL (Structured Query Language) (sql)
Infine, rilascia il cursore per rilasciarlo.
I seguenti frammenti di codice mettono insieme tutto:
Ecco loutput parziale:
In pratica, utilizzerai raramente il cursore per elaborare un set di risultati riga per riga.
In questo tutorial, hai imparato a utilizzare il cursore di SQL Server per elaborare un set di risultati, ogni riga alla volta.