gpt4 book ai didi

sql - 可选的 where 子句取决于函数参数

转载 作者:行者123 更新时间:2023-12-04 20:54:49 24 4
gpt4 key购买 nike

给定这个伪代码

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 语句的示例只做变量赋值(而不是执行子句)(例如 hereherehere )。

是否可以使用 case 过滤条件依赖于参数函数的 where 子句,或者这是使用动态 SQL 的唯一方法?

最佳答案

您可以轻松地将伪代码转换为 SQL 逻辑:

select var1, var2, var3
from table1
where var1 in (select var1 from table2) and
((arg1 = 'some_val' and var2 < 100) or
(arg1 <> 'some_val')
);

注意:您需要小心处理 NULL 值。

并且,这可以简化为:

where var1 in (select var1 from table2) and
(var2 < 100 or arg1 <> 'some_val')

另外,给变量加上一些前缀是个好主意,这样它们就不会与列名混淆。

关于sql - 可选的 where 子句取决于函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38284216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com