检查oracle中的常量数组中是否存在值

时间:2015-05-21 09:43:58

标签: oracle plsql

我有一些预定义的值,比如

declare 
v_type varchar2(20);
begin
    select type into v_type from GenericTypes where id =5 ;
   // say v_type = 'XYZ'

end;

现在,我必须检查v_type是否等于' ABC'或者' DEF'或者' ASD'还有5件物品。

所以我用过: if v_type = 'ABC' or v_type ='DEF' or v_type='ASD'和另外5个条件

如果有更有效的方法来执行此操作,例如使用select exists等。

2 个答案:

答案 0 :(得分:3)

您应该能够使用IN子句,例如:

if v_type IN ('ABC','DEF','ASD') then
  do things;
end if;

答案 1 :(得分:1)

您可以使用 CASE 表达式并检查查询本身的条件。

例如,

DECLARE
  v_type NUMBER;
BEGIN
  SELECT
    CASE
      WHEN TYPE IN ('ABC','DEF','ASD')
      THEN 1
      ELSE 0
    END GenericTypes
  INTO v_type
  WHERE ID  =5;
  IF v_type = 1 THEN
    -- do somethins
  END IF;
END;
/