如何在If条件中使用select语句

时间:2015-06-05 20:19:47

标签: oracle select if-statement conditional-statements

我有一个包含值' 1'

的变量

当前代码:

if var1 in (1, 2, 3, 4) then ...

所需格式(我不想对比较值进行硬编码):

if var1 in (select col1 from table1) then ...

Select col1 from table1; 

1  
2  
3  
4 

3 个答案:

答案 0 :(得分:1)

根据您使用的语言,您可以将select语句结果返回给数组或对象,之后您可以对数组或对象执行条件语句:

EX。 ARR中的IF var1 ..

答案 1 :(得分:1)

这是正确的方法:

declare
   rid rowid;
begin
  --prior logic
   begin
       select rowid into rid from table1 where table1.col1=var1;
       -- condition is met here, do the then part
   exception
       when no_data_found then
          --this is the else part, if you do not want to do anything, then
          -- just put null;
   end;
   --subsequent logic
end;

为什么这是正确的方法:

  • 它不使用count(*),你不是要计算匹配的记录,你只是测试存在。
  • 这是最快的方法,如果col1被索引,你将不会读取任何表数据,只读取索引。
  • 你可以避免双重比较,一次在select子句中,一次在if语句中。

答案 2 :(得分:0)

我认为这应该是方法。

select count(*) from table1 into var1_cnt
where table1.col1 = var1;

if var1_cnt > 0 then
.......
end if;