SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)
Static Rowsets
HP NonStop SQL/MX Programming Manual for C and COBOL—523627-004
7-22
Limiting the Size of the Input Rowset
Limiting the Size of the Input Rowset
When you are inserting rows from a rowset, you must limit the input size to only the
rows that have been populated with data.
Example
This example inserts multiple rows (JOBCODE and JOBDESC columns) from host
variable arrays into the JOB table. The input size is limited by the FOR INPUT SIZE
clause to five rows:
EXEC SQL BEGIN DECLARE SECTION;
char SQLSTATE[6];
ROWSET[10] unsigned NUMERIC (4) hva_jobcode;
ROWSET[10] 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 ROWSET FOR INPUT SIZE 5
INSERT INTO persnl.job (jobcode, jobdesc)
VALUES (:hva_jobcode, :hva_jobdesc);
...
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 sqlstate pic x(5).
01 rs.
02 ROWSET[10] hvajobcode pic 9(4) comp.
02 ROWSET[10] hvajobdesc pic x(18).
EXEC SQL END DECLARE SECTION END-EXEC.
...
***** Populate the rowset in some way *****
Move 100 TO hvajobcode (1)
Move "PROJECT MANAGER" TO hvajobdesc(1)
Move 200 TO hvajobcode (2)
Move "PROGRAM MANAGER" TO hvajobdesc(2)
Move 300 TO hvajobcode (3)
Move "QUALITY SUPERVISOR" TO hvajobdesc(3)
Move 400 TO hvajobcode (4)
Move "TECHNICAL OFFICER" TO hvajobdesc(4)
Move 500 TO hvajobcode (5)
Move "EXECUTIVE OFFICER" TO hvajobdesc(5)
EXEC SQL ROWSET FOR INPUT SIZE 5
INSERT INTO job (jobcode, jobdesc)
C
COBOL