繁体   English   中英

使用 PL/SQL 检查多个条件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM