Un cursore è una struttura di programmazione di database SQL che la maggior parte dei programmatori di database cercano di evitare , quando possibile. Un database SQL è costruito per elaborare gruppi di record, o " set di dati ", ma un cursore è progettato per gestire un solo record per volta --- e possono anche bloccare tutti gli altri programmi di fuori delle tabelle di riferimento che finché non sono finalmente fatto . Sostituzione di cursori con strutture diverse è quasi sempre una buona pratica di programmazione SQL . Emulare un Cursore Con un ciclo while
un ciclo while è simile a una struttura del cursore , ma non trasporta le stesse pene di bloccaggio . Pertanto, si può prendere quasi tutto il tempo al processo , ma non bloccare altri programmi di fuori delle tabelle che sta utilizzando
Un esempio di struttura While: .
While condizione ( il programma verrà ciclo finché la condizione è vera ) per
Begin
Codice
( questo codice verrà eseguito una volta su ogni passo del ciclo While)
Fine
definire una funzione
SQL dispone di funzioni definite dall'utente . Piuttosto che raccogliere tutti i risultati e poi analizzarli uno alla volta con un cursore , la funzione definita dall'utente può essere utilizzato come parte di Select .
Per mettere una funzione definita dall'utente in una Select query, utilizzare questa struttura :
Selezionare Nome, Cognome, dbo.user_function ( account_balance ) come AverageBalance
costruire una tabella Espressione
comune < p > Pensate di un'espressione di tabella comune , come una tabella temporanea truccata . È possibile creare un'espressione di tabella comune utilizzando una varietà di query standard e poi lavorare con loro come se fossero tabelle SQL standard
La struttura di un'espressione di tabella comune è : .
My_CTE (
standard di query di selezione vanno qui
) ;
Dopo my_CTE è stato definito , ulteriori domande possono fare riferimento come se fosse una tabella
.
Aggiungi una colonna Identity
una delle ragioni più comuni per utilizzare un cursore per scorrere una tabella che non dispone di una colonna Identity --- cioè un identificatore univoco per ogni riga della tabella . Senza questo identificatore , è molto difficile lavorare con i dati con le query SELECT standard. Modifica della tabella per aggiungere una colonna chiave primaria risolve questo problema e dovrebbe eliminare la necessità di un cursore per esaminare ogni singolo record .