Oracle 使用For循环重写If-else块

Oracle 使用For循环重写If-else块,oracle,if-statement,for-loop,plsql,Oracle,If Statement,For Loop,Plsql,如何使用for循环编写以下If-else块: BEGIN IF :new.plan_id = 1 THEN SELECT PLAN_MAX_START_HH24 INTO NEW_PLAN_MAX_START_HH24 FROM screening_plan WHERE plan_id = 1; SELECT PLAN_MIN_START_HH24 INTO NEW_PLAN_MIN_START_HH24 FROM screeni

如何使用for循环编写以下If-else块:

    BEGIN
        IF :new.plan_id = 1 THEN
          SELECT PLAN_MAX_START_HH24 INTO NEW_PLAN_MAX_START_HH24 FROM screening_plan WHERE plan_id = 1; 
          SELECT PLAN_MIN_START_HH24 INTO NEW_PLAN_MIN_START_HH24 FROM screening_plan WHERE plan_id = 1;
        ELSIF :new.plan_id = 2 THEN
          SELECT PLAN_MAX_START_HH24 INTO NEW_PLAN_MAX_START_HH24 FROM screening_plan WHERE plan_id = 2; 
          SELECT PLAN_MIN_START_HH24 INTO NEW_PLAN_MIN_START_HH24 FROM screening_plan WHERE plan_id = 2;
        ELSIF :new.plan_id = 3 THEN
          SELECT PLAN_MAX_START_HH24 INTO NEW_PLAN_MAX_START_HH24 FROM screening_plan WHERE plan_id = 3; 
          SELECT PLAN_MIN_START_HH24 INTO NEW_PLAN_MIN_START_HH24 FROM screening_plan WHERE plan_id = 3;
        ELSIF :new.plan_id = 4 THEN
          SELECT PLAN_MAX_START_HH24 INTO NEW_PLAN_MAX_START_HH24 FROM screening_plan WHERE plan_id = 4; 
          SELECT PLAN_MIN_START_HH24 INTO NEW_PLAN_MIN_START_HH24 FROM screening_plan WHERE plan_id = 4;
        END IF;
     END;

对于一些值为
1,2,3,4
plan\u id
,我必须选择
plan\u max\u start\u hh24
plan\u min\u start\u hh24
为什么您认为需要For循环?我假设plan_id是唯一的数字(即,上面的每个查询最多返回1行)

还有,为什么要做两个选择?您可以在一个select语句中将多个列返回到相应的变量中

我想你可能想要这样的东西:

  if :new.plan_id in (1, 2, 3, 4) then
    select plan_max_start_hh24, plan_min_start_hh24
    into   new_plan_max_start_hh24, new_plan_min_start_hh24
    from   screening_plan
    where  plan_id = :new.plan_id;
  end if;

不要忘记包含一个异常块,以考虑上面的查询不返回一行的情况(如果plan_id不是唯一的列,则返回多行)。

这正是我想要的。非常感谢。