【发布时间】:2016-11-12 01:25:09
【问题描述】:
给定这个伪代码
create or replace procedure my_test
( arg1 IN varchar2 )
begin
select var1, var2, var3 from table1
where
var1 in (select var1 from table2)
if(arg1 = 'some_val')
and
var2 < 100
end if;
end;
现在,我知道 where 子句中不允许使用 if 语句,并且我见过的所有 case 语句示例仅执行变量赋值(而不是执行子句)(例如 @987654321 @ 和 here 和 here)。
是否可以使用case 过滤有条件地依赖于参数函数的 where 子句,或者是使用动态 SQL 的唯一方法?
【问题讨论】:
标签: sql oracle select plsql where