SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)
Dynamic SQL With Descriptor Areas
HP NonStop SQL/MX Programming Manual for C and COBOL—523627-004
10-9
Consideration—Retrieving Multiple Values From a
Large Buffer
Example 10-1. C VARIABLE_POINTER Example (page1of3)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void assign_to_hv(void);
void sql_error(void);
int main(void)
{
 char SQLSTATE_NODATA[6] = "02000";
 EXEC SQL BEGIN DECLARE SECTION;
 char SQLSTATE[6];
 char hv_sql_statement[1024];
 char hv_sqlstmt[30];
 char hv_curspec[256];
 int desc_max;
 long hv_num;
 VARCHAR hv_sqlda_name[129];
 long hv_type;
 long hv_empnum_length;
 long hv_empname_length;
 long hv_empnum_ptr;
 long hv_empname_ptr;
 unsigned short hv_i;
 EXEC SQL END DECLARE SECTION;
 SQLSTATE[5] = '\0';
 SQLSTATE_NODATA[5] = '\0';
 EXEC SQL WHENEVER SQLERROR CALL sql_error
;
 EXEC SQL DECLARE CATALOG 'seg';
 EXEC SQL DECLARE SCHEMA 'suzuki';
 strcpy(hv_sqlstmt,"hvstmt");
 strcpy(hv_curspec,"hvcur");
 strcpy(hv_sql_statement, 
 "SELECT EMP_NO, EMP_NAME FROM EMP 
 WHERE EMP_NO = '177397 '");
 EXEC SQL PREPARE :hv_sqlstmt FROM :hv_sql_statement;
 desc_max = 10; 
 EXEC SQL ALLOCATE DESCRIPTOR 'out_sqlda' 
 WITH MAX :desc_max;
C










