Oracle 使用For循环重写If-else块
如何使用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
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不是唯一的列,则返回多行)。这正是我想要的。非常感谢。