Oracle - 如果绑定变量可以为空,是否可以将绑定变量放入 () 子句中



Oracle中,如果绑定变量可以为空,是否可以将其放入IN()子句中?询问是因为在SQL中如果Oracle看到IN()中没有任何数据,则会显示错误

ORA-00936: missing expression.

编辑:未能提及不能使用PL/SQL...

Edit2:也没有提到变量的格式为 1,2,3 或空字符串。空字符串不能替换为 NULL。

似乎正在工作:

declare
   l_statement varchar2(32767);
begin
   l_statement := 'select * from user_tables where table_name in (:a)';
   execute immediate l_statement
      using '';
end;

你可以做到,它在语法上是正确的。我希望您知道 NULL 甚至不等于 NULL 的任何东西(所以 NULL=NULL 不是 TRUE 而是 NULL),它可能会导致查询中出现意外结果,因此如果不影响性能,请考虑使用 NVL 函数

最新更新