The ALLOCATE CURSOR statement defines a cursor for a dynamically-prepared statement or for a result set returned from a previously invoked procedure.
►►──── ALLOCATE extended-cursor-name ──────────────────────────────────────────► ►┬─ CURSOR ──────┬─────────────────┬─ FOR extended-statement-name ────────┬───►◄ │ ├ WITH RETURN ────┤ │ │ └ WITHOUT RETURN ◄┘ │ └┬──────────┬─ FOR PROCEDURE SPECIFIC PROCEDURE spec-routine-designator ─┘ └─ CURSOR ─┘
Identifies the name of the cursor being defined. The name must conform to the rules for an identifier and must be unique within the specified scope.
Identifies the name of the statement for which the cursor is being defined. A statement with this name and scope must have been prepared within the same SQL transaction as that in which the ALLOCATE CURSOR statement is being executed.
Defines the cursor as a returnable cursor. If a returnable cursor is allocated in an SQL-invoked procedure and is in the open state when the procedure terminates, a result set is returned to the caller.
Specifies that the cursor is not a returnable cursor. This is the default.
Specifies that the cursor is to be allocated for a result set returned by the invocation of the identified procedure. This type of cursor is called a received cursor.
Identifies the SQL-invoked procedure.
Parameters for Expansion of spec-routine-designator
Specifies the schema with which the procedure identified by procedure-identifier is associated.
Identifies a procedure defined in the dictionary.
Identifies a host variable containing the name of the previously invoked procedure.
Identifies a routine parameter containing the name of the previously invoked procedure.
Identifies a local variable containing the name of the previously invoked procedure.
Qualifies the procedure name with the name of the schema with which it is associated. This option is an extension to the SQL standard.
Specifies the schema with which the procedure is associated.
Identifies a host variable containing the name of the schema with which the previously invoked procedure is associated.
Identifies a routine parameter containing the name of the schema with which the previously invoked procedure is associated.
Identifies a local variable containing the name of the schema with which the previously invoked procedure is associated.
Note: For more information about using a schema name to qualify a procedure, see Identifying Entities in Schemas.
Updateable Cursors
The PREPAREd statement referenced in the ALLOCATE CURSOR statement must be a cursor-specification. The cursor created as a result of the ALLOCATE CURSOR statement, is updateable, if the cursor-specification is updateable.
Allocating a Received Cursor for a Result Set
If the ALLOCATE statement is used for a result set, then the procedure identified by spec-routine-designator must have been previously invoked by an SQL CALL or SELECT statement in the same transaction as that in which the ALLOCATE CURSOR statement is executed.
The result sets that the SQL-invoked procedure returns, form a list ordered in the sequence in which the cursors were opened by the procedure. When a received cursor is allocated, the following actions are taken:
If an SQL-invoked procedure has started multiple sessions, the sequence of returned result sets is by session, in the order in which the sessions were connected. Within each session, the result sets are sequenced by the order in which their cursors were opened.
A received cursor cannot be used to return a result set nor can it be referenced in a positioned update or delete statement.
Note: For more information about updateable cursors, see DESCRIBE.
Creating a Local Cursor
The following ALLOCATE CURSOR statement creates a local cursor called C1 and associates it with the local statement whose name is passed in :sname:
EXEC SQL ALLOCATE 'C1' CURSOR FOR :SNAME END-EXEC
Creating a Global Cursor
The following ALLOCATE CURSOR statement creates a global cursor whose name is passed in :CNAME and associates it with the global statement whose name is passed in :SNAME:
EXEC SQL ALLOCATE GLOBAL :CNAME CURSOR FOR :SNAME END-EXEC
Sharing a Statement Definition
The following two ALLOCATE CURSOR statements create two cursors, one of which is local and one of which is global. They are both associated with the same local statement:
EXEC SQL ALLOCATE 'C1' CURSOR FOR 'S1' END-EXEC EXEC SQL ALLOCATE GLOBAL CURSOR 'G1' FOR 'S1' END-EXEC
Allocating a Received Cursor for a Result Set
exec sql
call GET_EMPLOYEE_INFO(1003)
end-exec
exec sql
allocate 'RECEIVED_CURSOR_GET_EMPG' for procedure specific
procedure GET_EMPLOYEE_INFO
end-exec
|
Copyright © 2014 CA.
All rights reserved.
|
|