SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)

Static Rowsets
HP NonStop SQL/MX Programming Manual for C and COBOL523627-004
7-33
Selecting From Rowset-Derived Tables With a
Cursor
hva_ordernum[2] = 2403;
hva_ordernum[3] = 5103;
...
/* Specify number of valid input values */
num_inputvalues = 4;
/* Declare cursor C1 for select operation */
EXEC SQL
DECLARE C1 CURSOR FOR
SELECT od.partnum, rs.rowid
FROM sales.odetail od,
ROWSET :num_inputvalues(:hva_ordernum)
KEY BY rowid
AS rs(ordernum, rowid)
WHERE od.ordernum = rs.ordernum;
EXEC SQL OPEN C1;
/* Fetch rows from table */
while (SQLCODE == 0) {
EXEC SQL FETCH C1 INTO :hva_od_partnum, :rowid;
/* Process the output rows in some way. */
}
EXEC SQL CLOSE C1;
...
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 SQLCODE pic s9(9) comp.
01 rs.
02 ROWSET[5] hvaordernum pic 9(4) comp.
02 ROWSET[5] hvaodpartnum pic 9(4) comp.
02 ROWSET[5] rowid pic s9(4) comp.
01 numinputvalues pic 9 comp.
EXEC SQL END DECLARE SECTION END-EXEC.
...
***** Populate the rowset in some way *****
Move 244 TO hvaordernum(1)
Move 2001 TO hvaordernum(2)
Move 2403 TO hvaordernum(3)
Move 5103 TO hvaordernum(4)
..
***** Specify number of valid input values ****
Move 4 TO numinputvalues
***** Declare cursor C1 for select operation ****
EXEC SQL
DECLARE C1 CURSOR FOR
SELECT od.partnum, rs.rowid
FROM sales.odetail od,
ROWSET :numinputvalues(:hvaordernum)
KEY BY rowid
AS rs(ordernum, rowid)
WHERE od.ordernum = rs.ordernum
COBOL