Dynamic SQL Operations
HP NonStop SQL/MP Programming Manual for C—429847-008
10-50
Detailed Dynamic SQL Program
362 lastchar = nb + (name_len - 1);
363 if ( *lastchar == ' ')
364 { strncpy( name_array, nb, name_len - 1);
365 name_array[name_len -1] = '\0';
366 }
367 else
368 { strncpy( name_array, nb, name_len);
369 name_array[name_len] = '\0';
370 }
371 /* advance nb to the next name */
372 nb = lastchar + 1;
373 }
374
375
376 /* ------------------------------------------------ */
377 /* Request input data depending on data type */
378 /* ------------------------------------------------ */
379
380 switch (sqlda->sqlvar[i].data_type) {
381 /* ------------------------------------------------ */
382 case _SQLDT_ASCII_F : /* CHAR data type */
383
384 in_out_ptrs.char_ptr = (char *) sqlda->sqlvar[i].var_ptr;
385 data_len = sqlda->sqlvar[i].data_len;
386
387 if (name_len > 0)
388 printf("Please enter max %d characters for ?%s: ",
389 data_len, name_array);
390 else
391 printf("Please enter max %d characters: ",
392 data_len);
393
394 if ( get_string( in_out_ptrs.char_ptr, data_len,
395 0, PARAM_TERMINATOR ) < 0 )
396 { /* input info too long */
397 printf("\n**** Error: Input data is too long.\n");
398 fflush(stdout);
399 return (-1);
400 }
401
402 break;
403
404 /* ------------------------------------------------- */
405 case _SQLDT_ASCII_V : /* VARCHAR data type */
406
407 in_out_ptrs.char_ptr = (char *) (sqlda->sqlvar[i].var_ptr + 2);
408 data_len = sqlda->sqlvar[i].data_len;
409
410 if (name_len > 0)
411 printf("Please enter max %d characters for ?%s: ",
412 data_len, name_array);
413 else
414 printf("Please enter max %d characters: ",
415 data_len);
416
417 if ( ( data_read = get_string( in_out_ptrs.char_ptr, data_len,
418 0, PARAM_TERMINATOR )) < 0 )
419 { /* input info too long; or some problem */
420 printf("\n**** Error: Input data is too long.\n");
421 fflush(stdout);
422 return (-1);
423 }
424
Example 10-8. Detailed Dynamic SQL Program (page 7 of 22)