Alternative a SQL Cursori

July 18

Alternative a SQL Cursori


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 è stato progettato per gestire solo un singolo record alla volta --- e possono anche bloccare tutti gli altri programmi fuori dalle tabelle fanno riferimento fino a quando sono finalmente concluso. Sostituzione cursori con diverse strutture è quasi sempre una buona pratica di programmazione SQL.

Emulare un cursore con un While Loop

Un ciclo while appare simile ad una struttura del cursore, ma non trasporta le stesse pene di bloccaggio. Pertanto, si può prendere quasi tutto il tempo per elaborare, ma non bloccare altri programmi fuori delle tabelle che sta utilizzando.

Un esempio di struttura While:

Mentre condizione (programma ciclico volontà finché la condizione è vera)

Inizio

Codice (questo codice verrà eseguito una volta su ogni passaggio attraverso il ciclo while)

Fine

Definire una funzione

SQL ha funzioni definite dall'utente. Piuttosto che raccogliere tutti i risultati e poi analizzare uno alla volta con un cursore, la funzione definita dall'utente può essere utilizzato come parte di Select.

Per inserire una funzione definita dall'utente in una query di selezione, utilizzare questa struttura:

Selezionare nome, cognome, dbo.user_function (account_balance) come AverageBalance

Costruire un espressione di tabella comune

Pensate a una tabella espressione comune come una tabella temporanea truccata. È possibile costruire 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 una tabella comune è:

Con my_CTE (

query di selezione standard vanno qui

);

Dopo my_CTE è stato definito, ulteriori domande possono fare riferimento a esso come se fosse un tavolo.

Aggiungere una colonna di identità

Uno dei motivi più comuni per utilizzare un cursore è per scorrere una tabella che non dispone di una colonna Identity --- che è, un identificatore univoco per ogni riga della tabella. Senza questo identificatore, è molto difficile lavorare con i dati con le query di selezione standard. Modifica della tabella per aggiungere una colonna di chiave primaria risolve questo problema e dovrebbe eliminare la necessità di un cursore per esaminare ogni singolo record.