>>--EXEC SQL---.------------.------DECLARE cursor_name------>
+-AT db_name-+
>--.-------------.-----.---------.------.--------------.--->
+-SENSITIVE---+ +-FORWARD-+ +-LOCK---------+
+-INSENSITIVE-+ +-KEYSET--+ +-LOCKCC-------+
+-DYNAMIC-+ +-OPTIMISTIC---+
+-STATIC--+ +-OPTCC--------+
+-SCROLL--+ +-OPTCCVAL-----+
+-DATASET-+ +-READ ONLY----+
+-READONLY-----+
+-FASTFORWARD--+
+-FAST FORWARD-+
>--CURSOR-------.----------------.---------FOR------------->
+----WITH HOLD---+
+----WITH RETURN-.----------.-|
+TO CALLER-+
+-- ; ---------------------------------+
V |
>----.----select_stmt-----------------------.-------------->
+----stored_procedure_call_statement---+
+----prepared_stmt_name----------------+
+----OPTIMIZE FOR n ROWS---------------+
>--.-------------------------------.----------------------->
+-FOR READ ONLY-----------------+
+-FOR UPDATE-.----------------.-+
+-OF column_list-+
>------END-EXEC--------><
>>--EXEC SQL---.------------.------DECLARE cursor_name------> +-AT db_name-+ >--CURSOR FOR---result-set-generating-dml-statement--------> >------END-EXEC--------><
db_name | The name of a database that has been declared using DECLARE DATABASE. |
cursor_name | Cursor name used to identify the cursor in subsequent statements. Cursor names can contain any legal filename character and be up to 30 characters in length. The first character must be a letter. |
select_stmt | Any valid SQL SELECT statement, or a QUERY ODBC statement or a CALL statement for a stored procedure that returns a result set. |
prepared_stmt_name | The name of a prepared SQL SELECT statement or QUERY ODBC statement. |
stored_procedure_call_stmt | A valid stored procedure call which returns a result set. |
n | The number of rows per block fetched when the cursor is opened. The value of n must be less than 1000. |
column_list | A list of column-names, separated by commas. |
result-set-generating-dml-statement | A SQL Server INSERT, non-positioned UPDATE, or DELETE statement with an OUTPUT clause. |
Comments:
Two separately compiled programs cannot share the same cursor. All statements that reference a particular cursor must be compiled together.
The DECLARE CURSOR statement must appear before the first reference to the cursor. The SELECT statement runs when the cursor is opened. The following rules apply to the SELECT statement:
If OPTIMIZE FOR is specified, OpenESQL uses n to override the setting of the PREFETCH directive for the cursor. This allows prefetch optimization for individual cursors.
You can specify WITH RETURN in a SQL CLR stored procedure compiled with the HCOSS DIALECT=MAINFRAME directive. If you do so, the client application must use the ALLOCATE CURSOR and ASSOCIATE LOCATOR statements to retrieve the result set(s).