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