在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 函数