Ich benutze einen Cursor.
%Vor% Jetzt ist meine Frage, kann ich die Definition des Cursors cursor_name
nach der Verwendung ändern? Ich meine etwas Ähnliches wie:
Verwendung des gleichen Cursornamens cursor_name
, aber die Definition wird geändert.
Wenn dies möglich ist, wie geht das?
Danke.
Ja, es ist möglich , aber es muss sein nach deinem DEALLOCATE es. Hast du das versucht und es funktioniert nicht oder so?
Sie können auch sehen, ob Sie wirklich einen Cursor benötigen. Sie schaden der Leistung und SQL, das sie verwendet, kann oft ohne sie neu geschrieben werden.
Werfen Sie einen Blick auf diesen Artikel , der übergeht wie es geht. Sie verwenden die weniger gebräuchliche DECLARE / SET-Syntax zum Deklarieren eines Cursors (in meiner Welt mindestens unüblich). Hier ist das Beispiel, das sie bieten:
%Vor%Um die Diskussion zu vermeiden, ob ein Cursor aus rein technischer Sicht notwendig ist oder nicht, können Sie nach dem Schließen des Cursors den Namen erneut verwenden.
Korrektur zu Abe Miessler irreführender Kommentare über die Cursor-Performance:
Transact-SQL-Cursor sind äußerst effizient, wenn sie in gespeicherten Daten enthalten sind Prozeduren und Trigger. Dies liegt daran, dass alles in kompiliert ist ein Ausführungsplan auf dem Server und kein Netzwerkverkehr zugeordnet zum Abrufen von Zeilen
Was für die Leistung schlecht ist, ruft wiederholt einen globalen Cursor für die nächste Zeile von außerhalb eines gespeicherten Proc auf. Besser, eine Client API Batching-Funktionen zu verwenden, um DB Rundreisen zu reduzieren.
Sie können Transact-SQL-Cursor in Anwendungen mit FETCH und verwenden Binden jeder vom FETCH zurückgegebenen Spalte an eine Programmvariable. Das Transact-SQL-FETCH unterstützt jedoch keine Stapel, daher ist dies der am wenigsten effiziente Möglichkeit, Daten an eine Anwendung zurückzugeben. Abrufen jeder Zeile erfordert einen Roundtrip zum Server. Es ist effizienter zu verwenden die Cursorfunktionalität, die in die Datenbank-APIs integriert ist, die unterstützen Stapel von Zeilen abrufen.
Tags und Links sql-server tsql cursor