Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è l'uso di un cursore in SQL Server?

I cursori sono un meccanismo per enumerare esplicitamente le righe di un set di risultati, invece di recuperarlo come tale.

Tuttavia, mentre possono essere più comodi da usare per i programmatori abituati a scrivere While Not RS.EOF Do ... , sono in genere una cosa da evitare all'interno delle stored procedure di SQL Server, se possibile:se puoi scrivere una query senza l'uso di cursori, offri all'ottimizzatore una possibilità molto migliore di trovare un modo rapido per implementarla.

In tutta onestà, non ho mai trovato un caso d'uso realistico per un cursore che non potesse essere evitato, ad eccezione di alcune attività amministrative come scorrere tutti gli indici nel catalogo e ricostruirli. Suppongo che potrebbero avere alcuni usi nella generazione di report o nella stampa unione, ma probabilmente è più efficiente eseguire il lavoro simile a un cursore in un'applicazione che comunica con il database, lasciando che il motore del database faccia ciò che sa fare meglio:impostare la manipolazione.