TSQL Änderung der Cursordefinition

8

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:

%Vor%

Verwendung des gleichen Cursornamens cursor_name , aber die Definition wird geändert. Wenn dies möglich ist, wie geht das?

Danke.

    
Ogrish Man 01.03.2011, 20:41
quelle

3 Antworten

10

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%     
Abe Miessler 01.03.2011, 20:46
quelle
4

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.

    
Joe Stefanelli 01.03.2011 20:45
quelle
-1

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.

    
zanfilip 23.09.2015 10:01
quelle

Tags und Links