在Oracle
中,如果绑定变量可以为空,那么它是否可以放在IN()
子句中?问,因为在SQL中如果Oracle看到IN()
而没有任何数据,则显示错误
ORA-00936: missing expression.
编辑:未提及不能使用PL / SQL ......
Edit2:也没有提到变量是格式1,2,3或空字符串。空字符串不能替换为NULL。
答案 0 :(得分:1)
你可以做到,它在语法上是正确的。 我希望你知道NULL对于任何东西都不等于NULL(所以NULL = NULL不是TRUE而是NULL),它可能会导致查询出现意外结果,所以考虑使用NVL函数,如果它不影响性能
答案 1 :(得分:1)
似乎有效:
declare
l_statement varchar2(32767);
begin
l_statement := 'select * from user_tables where table_name in (:a)';
execute immediate l_statement
using '';
end;