Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Vorteile bei der Verwendung der Cursorvariablen in SQL Server (deklarieren Sie den @cn-Cursor)

Die Verwendung des DECLARE @local_variable CURSOR hat noch einen weiteren Vorteil Syntax, die ich gerade entdeckt habe.

Der Vorteil tritt auf, wenn eine gespeicherte Prozedur eine andere aufruft und beide Prozeduren gleichzeitig Cursor geöffnet haben. Wenn DECLARE cursor_name CURSOR verwendet wird, um die Cursor zu definieren, und beide Prozeduren verwenden denselben Cursor_Namen, dann erhalten Sie

Auf der anderen Seite, wenn DECLARE @local_variable CURSOR wird verwendet, um die Cursor in den über- und untergeordneten gespeicherten Prozeduren zu definieren, dann @local_variable ist für jede Prozedur lokal und es gibt keinen Konflikt. Für diejenigen, die diese Methode noch nicht verwendet haben, hier ein Beispiel mit @C als lokale Variable:

DECLARE @C AS CURSOR;

SET @C = CURSOR FOR SELECT ...;

OPEN @C;

FETCH NEXT FROM @C INTO ...;

...