[英]Checking for multiple conditions with PL/SQL
在我的代码中,我需要检查 IF 语句中的多个值的变量。 我在用:
IF var1 = 1 OR var1 = 12 OR var1 = 15 or var1 = 5 THEN
有没有办法更优雅地做到这一点,在 SQL 中添加一个IN
子句?
我尝试使用MEMBER OF
IF var1 MEMBER OF (1,5,12,15) THEN
但这没有用
正如@OldProgrammer试图指出的那样,您不需要. 这通常适用于更复杂的数据结构。 对于一个简单的标量值,一个简单的 in (list)就足够了。
declare
var1 number := 2;
var2 number := 12;
begin
dbms_output.put( 'var1 value ' || var1);
if var1 in (1,5,12,15) then
dbms_output.put_line(' is in list.');
else
dbms_output.put_line(' is not in list.');
end if;
dbms_output.put( 'var2 value ' || var2);
if var2 in (1,5,12,15) then
dbms_output.put_line(' is in list.');
else
dbms_output.put_line(' is not in list.');
end if;
end;
结果:
var1 值 2 不在列表中。
var2 值 12 在列表中。
这并不是你真正想要的(更优雅地),但是 - 完成了这项工作。 看看有没有帮助。
SQL> declare
2 var1 number := 2;
3 l_cnt number;
4 begin
5 select count(*)
6 into l_cnt
7 from table(sys.odcinumberlist(1,5,12,15))
8 where column_value = var1;
9
10 if l_cnt > 0 then
11 dbms_output.put_line('Yes');
12 else
13 dbms_output.put_line('No');
14 end if;
15 end;
16 /
No --> 2 doesn't exist in the list
PL/SQL procedure successfully completed.
SQL> l2
2* var1 number := 2;
SQL> c/2/15
2* var1 number := 15;
SQL> /
Yes --> 15 exists in the list
PL/SQL procedure successfully completed.
SQL>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.