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-34
Inserting Rows From Rowset-Derived Tables
END-EXEC
EXEC SQL OPEN C1 END-EXEC
**** fetch rows from table ****
perform until sqlcode not = 0
EXEC SQL FETCH C1 INTO :hvaodpartnum, :rowid END-EXEC
**** Process the output rows in some way ****
end-perform
EXEC SQL CLOSE C1 END-EXEC
...
Inserting Rows From Rowset-Derived Tables
Use the INSERT statement and rowset-derived tables to insert multiple rows into a
table from a query that retrieves from the derived table.
Use this general syntax:
For complete syntax, see the INSERT statement in the SQL/MX Reference Manual.
Example
This example inserts multiple rows (JOBCODE and JOBDESC columns) selected from
a rowset-derived table:
EXEC SQL BEGIN DECLARE SECTION;
char SQLSTATE[6];
ROWSET[5] unsigned NUMERIC (4) hva_jobcode;
ROWSET[5] VARCHAR hva_jobdesc[19];
...
EXEC SQL END DECLARE SECTION;
...
/* Populate the rowset in some way. */
hva_jobcode[0] = 100;
strcpy(hva_jobdesc[0],"PROJECT MANAGER");
hva_jobcode[1] = 200;
strcpy(hva_jobdesc[1],"PROGRAM MANAGER");
hva_jobcode[2] = 300;
strcpy(hva_jobdesc[2],"QUALITY SUPERVISOR");
hva_jobcode[3] = 400;
strcpy(hva_jobdesc[3],"TECHNICAL OFFICER");
hva_jobcode[4] = 500;
strcpy(hva_jobdesc[4],"EXECUTIVE OFFICER");
...
EXEC SQL INSERT INTO persnl.job
SELECT jobcode, jobdesc
FROM ROWSET(:hva_jobcode, :hva_jobdesc)
INSERT INTO table-name (column [,column]...)
SELECT column [,column]...
FROM ROWSET [rowset-size] (:array-name [,:array-name]...)
[AS] correlation (column [,column]...)
C