Offtopic, but it's a good idea to use placeholders instead of those embedded variables. Otherwise, you'll get clobbered someday when your variable contains an apostrophe (e.g. "Smith's Corp."):
$sSQL = qq{ ... WHERE SAPP = ? AND SOWNERID = ? ... };
...
$sCursor->execute($gsApp, $sOwnerID);
Also, if you're still getting NULL values for these variables that break the SQL, you could always make the SQL code more complex to handle it:
$sSQL = qq{ ... WHERE (SAPP = ? OR (? is NULL AND SAPP is NULL)) AND .
+.. };
...
$sCursor->execute($gsApp, $gsApp, $sOwnerID, $sOwnerID);
Update: I should point out that both of these pieces of advice are found in the documentation for the
DBI module
buckaduck