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

时间:2013-09-12 12:40:59

标签: oracle where-clause

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

ORA-00936: missing expression.

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

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

2 个答案:

答案 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;