The risnull() function

The risnull() function checks whether the C or the Informix® ESQL/C variable contains a null value.

Syntax

mint risnull(type; ptrvar)
   mint type;
   char *ptrvar;
type
An integer that corresponds to the data type of a C or Informix® ESQL/C variable. This type can be any data type except var binary or an lvarchar pointer variable. For more information, see Data type constants
ptrvar
A pointer to the C or Informix® ESQL/C variable.

Usage

The risnull() function determines whether Informix® ESQL/C variables of all data types except var binary and lvarchar pointer variables contain a null value. To determine whether a var binary or lvarchar pointer host variable contains null, use the ifx_var_isnull() macro. For more information, see The ifx_var_isnull() function.

Return codes

1
The variable does contain a null value.
0
The variable does not contain a null value.

Example

This sample program is in the risnull.ec file in the demo directory.
/*
   * risnull.ec *

   This program checks the paid_date column of the orders table for NULL
   to determine whether an order has been paid.
*/

#include <stdio.h>

EXEC SQL include sqltypes;

#define WARNNOTIFY          1
#define NOWARNNOTIFY    0

main()
{
    char ans;
    int4 ret, exp_chk();

    EXEC SQL BEGIN DECLARE SECTION;
        int4 order_num;

      mint order_date, ship_date, paid_date;
    EXEC SQL END DECLARE SECTION;

    printf("RISNULL Sample ESQL Program running.\n\n");
    EXEC SQL connect to 'stores7';        /* open stores7 database*/
    exp_chk("CONNECT TO stores7", NOWARNNOTIFY)

    EXEC SQL declare c cursor for
        select order_num, order_date, ship_date, paid_date from orders;
    EXEC SQL open c;
    if(exp_chk("OPEN c", WARNNOTIFY) == 1)  /* Found warnings */
      exit(1);
    printf("\n Order#\tPaid?\n");        /* print column hdgs */
    while(1)
      {
      EXEC SQL fetch c into :order_num, :order_date, :ship_date, :paid_date;
      if ((ret = exp_chk("FETCH c")) == 100)   /* if end of rows */
         break;         /* terminate loop */
      if(ret < 0)
         exit(1);
      printf("%5d\t", order_num);
      if (risnull(CDATETYPE, (char *)&paid_date)) /* is price NULL ? */
         printf("NO\n");
      else
         printf("Yes\n");
      }
   printf("\nRISNULL Sample Program over.\n\n");
}

/*
 *  The exp_chk() file contains the exception handling functions to
 *  check the SQLSTATE status variable to see if an error has occurred
 *  following an SQL statement. If a warning or an error has
 *  occurred, exp_chk() executes the GET DIAGNOSTICS statement and
 *  prints the detail for each exception that is returned.
 */

EXEC SQL include exp_chk.ec

For a complete listing of the exp_chk() function, see Guide to the exp_chk.ec file or see the exp_chk.ec file for a listing of this exception-handling function.

Output

RISNULL Sample ESQL Program running.


Order#      Paid?
 1001      Yes
 1002      Yes
 1003      Yes
 1004      NO
 1005      Yes
 1006      NO
 1007      NO
 1008      Yes
 1009      Yes
 1010      Yes
 1011      Yes
 1012      NO
 1013      Yes
 1014      Yes
 1015      Yes
 1016      NO
 1017      NO
 1018      Yes
 1019      Yes
 1020      Yes
 1021      Yes
 1022      Yes
 1023      Yes

RISNULL Sample Program over.