SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)
C Sample Programs
HP NonStop SQL/MX Programming Manual for C and COBOL—523627-004
A-26
Using a Dynamic SQL Rowset
Using a Dynamic SQL Rowset
Example A-8 shows a dynamic embedded SQL program that uses descriptor areas. 
Example A-8. Dynamic SQL Rowsets  (page 1 of 2)
/*****************************************************/ 
void dynamic_direct() 
/*****************************************************/ 
{ 
/* Initialize all variables */ 
printf("DYNAMIC_DIRECT:\n"); 
strcpy(in_desc,"inscols "); 
SQLSTATE[5] = '\0'; 
memset(statementBuffer, ' ', 390); 
statementBuffer[389] = '\0'; 
output_rowset_size = 10; 
/* INSERTING 10 ROWS */ 
EXEC SQL DELETE FROM CAT.SCH.DYNAMIC5; 
printf("prepare insert:\n"); 
strcpy(statementBuffer, 
"INSERT INTO CAT.SCH.DYNAMIC5 VALUES ( 'jim', ?[10] );" ); 
/* construct S1 from of INSERT statement */ 
EXEC SQL PREPARE S1 FROM :statementBuffer; 
printf("SQLSTATE after prepare is %s\n", SQLSTATE); 
printf("SQLCODE after prepare is %d\n", SQLCODE); 
EXEC SQL PREPARE S1 FROM :statementBuffer; 
num_in = 30; 
/* create SQLDA for INSERT columns */ 
EXEC SQL ALLOCATE DESCRIPTOR GLOBAL :in_desc with MAX :num_in; 
printf("SQLSTATE after allocate is %s\n", SQLSTATE); 
/* populate the SQLDA */ 
EXEC SQL DESCRIBE INPUT S1 USING SQL DESCRIPTOR :in_desc; 
printf("SQLSTATE after describe is %s\n", SQLSTATE); 
num = 1; 
EXEC SQL GET DESCRIPTOR :in_desc :output_rowset_size = ROWSET_SIZE; 
printf("ROWSET_SIZE after prepare & describe is %d\n", output_rowset_size); 
EXEC SQL GET DESCRIPTOR :in_desc :output_rowset_size = COUNT; 
printf("COUNT after prepare & describe is %d\n", output_rowset_size); 










