for ループで if else 条件を設定することは可能でしょうか
例えば
IF (emp_no IS NULL) then
for i in (select * from employees where emp_no= p_retval)
else
for i in (select * from employees where emp_no= p_retval_withcond)
end if;
上記を試してみると、コンパイルエラーが発生しました。
よろしく
構造は次のとおりです。
IF (emp_no IS NULL) then
for i in (select * from employees where emp_no= p_retval)
loop
-- loop actions
end loop;
else
for i in (select * from employees where emp_no= p_retval_withcond)
loop
-- second loop actions
end loop;
end if;
forループでは不可能ですが、ループ内のアクションが2つのケースで似ている場合は、カーソルでこれを行います。
declare
cursor c1 is select * from employees where emp_no= p_retval;
cursor c2 is select * from employees where emp_no= p_retval_withcond;
ligne employees%rowtype;
.....
begin
IF (emp_no IS NULL) then
open c1;
ELSE
open C2;
END IF;
loop
IF (emp_no IS NULL) then
fetch C1 into ligne;
exit when c1%notfound;
ELSE
fetch C2 into ligne;
exit when c2%notfound;
END IF;
-- loop actions
....
end loop;
IF (emp_no IS NULL) then
close c1;
ELSE
close C2;
END IF;
end;