DBNULLKEYS= LIBNAME Option

Controls the format of the WHERE clause when you use the DBKEY= data set option.
Valid in: SAS/ACCESS LIBNAME statement
Default: DBMS-specific
Data source: Aster nCluster, DB2 under UNIX and PC Hosts, DB2 under z/OS, Greenplum, HP Neoview, Informix, Microsoft SQL Server, Netezza, ODBC, OLE DB, Oracle, Sybase IQ
See: DBKEY= data set option, DBNULLKEYS= data set option

Syntax

DBNULLKEYS=YES | NO

Details

If there might be NULL values in the transaction table or the master table for the columns that you specify in the DBKEY= data set option, use DBNULLKEYS=YES. This is the default for most interfaces. When you specify DBNULLKEYS=YES and also a column that is not defined as NOT NULL in DBKEY=, 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 this syntax:
WHERE ((COLUMN = ?) OR ((COLUMN IS NULL) AND (? IS NULL)))
With this syntax SAS can prepare the statement once and use it for any (NULL or NOT NULL) value in the column. This syntax can potentially be much less efficient than the shorter form of the WHERE clause below. When you specify DBNULLKEYS=NO or a column that DBKEY= defines as NOT NULL, SAS generates a simple WHERE clause.
If you know that there are no NULL values in transaction or master tables for the columns that you specify in the DBKEY= option, you can use DBNULLKEYS=NO. This is the default for the Informix interface. If you specify DBNULLKEYS=NO and DBKEY=COLUMN, SAS generates a shorter form of the WHERE clause, regardless of whether the column that is specified in DBKEY= is defined as NOT NULL.
WHERE (COLUMN = ?)