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 = ?)