DECLARE @local_variable CURSOR
を使用することには別の利点があります 発見したばかりの構文。
この利点は、あるストアドプロシージャが別のストアドプロシージャを呼び出し、両方のプロシージャで同時にカーソルが開いている場合に発生します。 DECLARE cursor_name CURSOR
の場合 はカーソルを定義するために使用され、両方のプロシージャが同じcursor_nameを使用すると、次のようになります
一方、DECLARE @local_variable CURSOR
の場合 親と子のストアドプロシージャでカーソルを定義するために使用され、次に@local_variable
は各手順に対してローカルであり、競合はありません。これまでこの方法を使用したことがない人のために、@C
を使用した例を次に示します。 ローカル変数として:
DECLARE @C AS CURSOR;
SET @C = CURSOR FOR SELECT ...;
OPEN @C;
FETCH NEXT FROM @C INTO ...;
...