|
Transact-SQL User's Guide
|
Cursor scope
A
cursor's existence depends on its scope.
The scope refers to the context in which the cursor is used: within
a user session, a stored procedure, or a trigger.
Within a user session, the cursor exists only until the user
ends the session. The cursor does not exist for any additional sessions
that other users start. After the user logs off, Adaptive Server
deallocates the cursors created in that session.
If a declare cursor statement is part of
a stored procedure or trigger, the cursor created within it applies
to that scope and to the scope that launched the stored procedure
or trigger. However, cursors declared inside a trigger on an inserted or
a deleted table are not accessible to any nested
stored procedures or triggers. Such cursors are accessible
within the scope of that trigger. Once the stored procedure or trigger
completes, Adaptive Server deallocates the cursors created within
it.
Figure 17-3 illustrates how cursors operate between scopes.
Figure 17-3: How cursors operate within scopes
A cursor name
must be unique within a given scope. Adaptive Server detects name
conflicts within a particular scope only during runtime. A stored
procedure or trigger can define two cursors with the same name if only
one is executed. For example, the following stored procedure works because
only one names_crsr cursor is defined
in its scope:
create procedure proc2 @flag int
as
if @flag > 0
declare names_crsr cursor
for select au_fname from authors
else
declare names_crsr cursor
for select au_lname from authors
return