SQL/MX 2.x Reference Manual (H06.04+)

Embedded-Only SQL/MX Statements
HP NonStop SQL/MX Reference Manual540440-003
3-43
COBOL Examples of FETCH
This example uses extended cursor and statement names:
scanf("%s", in_curspec);
...
EXEC SQL PREPARE :curspec FROM :in_curspec;
EXEC SQL ALLOCATE :extcur CURSOR FOR :curspec;
...
EXEC SQL OPEN :extcur;
...
desc_max = 10;
ALLOCATE DESCRIPTOR 'fetch_sqlda' WITH MAX :desc_max;
DESCRIBE OUTPUT :curspec USING SQL DESCRIPTOR 'fetch_sqlda';
FETCH :extcur INTO SQL DESCRIPTOR 'fetch_sqlda';
... /* Process values in SQL descriptor area. */
EXEC SQL CLOSE :extcur;
COBOL Examples of FETCH
Suppose that you have a cursor that returns information from the PARTS table.
The host variables are declared in a declaration section, and the cursor declaration
lists the columns to be retrieved. The FETCH statement lists host variables to
receive the values returned for each column.
* Variable declarations
01 SQLCODE PIC S9(9) comp.
...
* Host variable declarations
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 SQLSTATE PIC X(5).
01 hostvar ... .
01 hostvar1 ... .
01 hostvar2 ... .
01 hostvar3 ... .
EXEC SQL END DECLARE SECTION END-EXEC.
...
* Declare cursor.
EXEC SQL DECLARE cursor1 CURSOR FOR
SELECT COL1, COL2, COL3
FROM PARTS
WHERE COL1 >= :hostvar
ORDER BY COL1
READ UNCOMMITTED ACCESS
END-EXEC.
...
* Open cursor.
EXEC SQL OPEN cursor1 END-EXEC.
...
* Fetch current row.
EXEC SQL FETCH cursor1
INTO :hostvar1, :hostvar2, :hostvar3
END-EXEC.
IF SQLCODE = 100 GOTO nodata.
...