Dynamic SQL Operations
HP NonStop SQL/MP Programming Manual for C—429847-008
10-17
Null Values
If you want all your parameters and output variables to handle null values, your
program should access ind_ptr every time it accesses var_ptr.
Handling Null Values in Input Parameters
A program uses an indicator parameter to indicate that a null value was entered for a
parameter. The indicator parameter follows the parameter in the SQL statement; for
example:
INSERT INTO =employee VALUES (1000, ?p INDICATOR ?i );
If a user enters a null value for ?p, the program should set ?i to a value less than zero.
If a user enters a non-null value for ?p, the program should set ?i to 0. Both ?p and ?i
are in the names buffer, so the program can prompt the user for a null value.
Each parameter in the statement entered by the user or constructed by your program
must have a corresponding indicator parameter to handle possible null values, or a
run-time error occurs when a null value is encountered.
After DESCRIBE INPUT runs and for each input parameter described in an sqlvar
array in the input SQLDA structure, NonStop SQL/MP sets null_info to -1 if the
input parameter in the prepared statement allows a null value (that is, if the prepared
statement included a null indicator).
Your program then checks null_info. If null_info contains a -1 and you are
allocating memory dynamically, you can now allocate two bytes of memory for a null
indicator value, and then set ind_ptr to point to the memory. Allocate this memory at
the same time you allocate memory for a possible nonnull parameter value.
If the user specifies a null value for the parameter, assign a -1 to the location pointed to
by ind_ptr. NonStop SQL/MP checks this value and then transmits a null value for
the parameter.
However, if the user does not enter a null value for the input parameter, you can assign
a 0 to the location indicated by ind_ptr. NonStop SQL/MP checks ind_ptr, sees
that ind_ptr indicates a nonnull value, and gets the parameter value from the
location indicated by var_ptr.
Handling Null Values in Output Variables
DESCRIBE sets null_info to -1 if the output variable can be null (that is, if the
prepared statement includes a null indicator). If the value returned is null, NonStop
SQL/MP checks null_info and moves a -1 into the location pointed to by ind_ptr.
(Errors are returned if the value is null but null_info is zero (0) or if ind_ptr is an
invalid address.)
Your program must check null_info to determine whether the value returned can be
null. If null_info contains a -1, then your program checks the location pointed to by
ind_ptr. If that location contains a -1, then a null value was returned. If the location
contains 0, then a nonnull value was returned and your program should get the value
from the location pointed to by var_ptr.