Fetch and insert with an ANSI-compliant database

For an ANSI-compliant database, when you use a character host variable in an INSERT statement or in the WHERE clause of an SQL statement (SELECT, UPDATE, or DELETE), the character value in the host variable must be null terminated. Therefore, use the following data types for character host variables:
  • char, string, or varchar
  • lvarchar
For example, the following insertion is valid because the first and last host variables are of type char, which is null terminated:
EXEC SQL BEGIN DECLARE SECTION;
   char first[16], last[16];
EXEC SQL END DECLARE SECTION;
;

stcopy("Dexter", first);
stcopy("Haven", last);
EXEC SQL insert into customer (fname, lname)
   values (:first, :last);

The stcopy() function copies the null terminator into the host variable and the char data type retains the null terminator.

Do not use the fixchar data type for host variables because it does not include a null terminator on the string. For an ANSI-compliant database, the database server generates an error under either of the following conditions:
  • If you try to insert a string that is not null terminated.
  • If you use a string that is not null terminated in a WHERE clause.