Ein Cursor ist eine SQL- Datenbank-Programmierung Struktur , dass die meisten Datenbank -Programmierer , um zu vermeiden , wann immer möglich versuchen. Eine SQL- Datenbank ist gebaut, um Gruppen von Datensätzen , oder zu verarbeiten " Datensätze ", sondern ein Cursor ist nur für einen einzelnen Datensatz zu einem Zeitpunkt behandeln --- und sie können auch sperren Sie alle anderen Programme aus den Tabellen auf die sie verweisen , bis sie endlich fertig . Ersetzen Cursor mit unterschiedlichen Strukturen ist fast immer eine gute SQL-Programmierung Praxis . Emulieren einen Cursor mit einer While-Schleife
A While-Schleife erscheint ähnlich wie ein Cursor -Struktur , aber nicht tragen die gleiche Schließung Strafen . Daher kann es fast so lange dauern, zu verarbeiten, aber es funktioniert nicht sperren anderen Programmen aus den Tabellen ist es mit
Ein Beispiel für eine Struktur zwar : .
While Bedingung (das Programm wird Schleife , solange die Bedingung wahr ist )
Begin
-Code ( dieser Code wird einmal ausführen bei jedem Durchlauf durch die While-Schleife )
End
eine Funktion definieren
SQL hat Benutzerdefinierte Funktionen . Anstatt die Erfassung aller von den Ergebnissen und dann analysieren sie ein zu einer Zeit mit einem Cursor , können die User-Defined Function als Teil des Select-Anweisung verwendet werden.
Um eine benutzerdefinierte Funktion in einer Select platzieren Abfrage , verwenden Sie diese Struktur :
Wählen Sie Vorname , Nachname , dbo.user_function ( account_balance ) als AverageBalance
Baue eine Common Table Expression
Denken Sie an eine Common Table Expression als aufgemotzte temporäre Tabelle . Sie können eine Common Table Expression mit einer Vielzahl von Standard-Queries und dann mit ihnen arbeiten , als ob sie Standard- SQL-Tabellen waren
Der Aufbau einer Common Table Expression ist : .
My_CTE (
Standard- sELECT-Abfragen gehen hier
);
Nach my_CTE definiert wurde, können alle weiteren Fragen verweisen , als ob es ein Tisch war
. Einloggen Bestellung eine IDENTITY-Spalte
einer der häufigsten Gründe , um einen Cursor zu verwenden, ist durch einen Tisch , der nicht über eine IDENTITY-Spalte zu blättern --- das ist eine eindeutige Kennung für jede Zeile in der Tabelle . Ohne diese Kennung , ist es sehr schwierig, mit der Daten mit Standard- Select -Abfragen arbeiten. Ändern Sie die Tabelle , um einen Primary Key Spalte hinzuzufügen löst dieses Problem und sollte die Notwendigkeit für einen Cursor , um jeden einzelnen Datensatz untersuchen zu beseitigen.