If there might be NULL values in the transaction table
or the master table for the columns that you specify in the DBKEY=
option, use DBNULLKEYS=YES. This is the default for most datasources.
When you specify DBNULLKEYS=YES and specify a column that is not defined
as NOT NULL in the DBKEY= data set option, SAS generates a WHERE clause
that can find NULL values. For example, if you specify DBKEY=COLUMN
and COLUMN is not defined as NOT NULL, SAS generates a WHERE clause
with the following syntax:
where ((column = ?) or ((column is null) and (? is null)))
This syntax enables
SAS to prepare the statement once and use it for any value (NULL or
NOT NULL) in the column. Note that this syntax has the potential to
be much less efficient than the shorter form of the WHERE clause (presented
below). When you specify DBNULLKEYS=NO or specify a column that is
defined as NOT NULL in the DBKEY= option, SAS generates a simple WHERE
clause.
If you know that there
are no NULL values in the transaction table or the master table for
the columns that you specify in the DBKEY= option, you can use DBNULLKEYS=NO.
If you specify DBNULLKEYS=NO and specify DBKEY=COLUMN, SAS generates
a shorter form of the WHERE clause (regardless of whether the column
specified in DBKEY= is defined as NOT NULL):
where (column = ?)