for循环中的if else语句

Posted

技术标签:

【中文标题】for循环中的if else语句【英文标题】:If else statement in for loop 【发布时间】:2012-09-17 11:16:51 【问题描述】:

是否有可能在 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;

当我尝试上述方法时,我遇到了编译错误。

问候

【问题讨论】:

【参考方案1】:

结构如下

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;

【讨论】:

【参考方案2】:

for 循环是不可能的,但如果你在循环中的操作在这两种情况下是相似的,我会用光标来做。

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;

【讨论】:

以上是关于for循环中的if else语句的主要内容,如果未能解决你的问题,请参考以下文章

Java中的结构语句

如何使用python将and else语句添加到for循环中的if作为lambda的一部分

Python基础语法—— 条件语句(if)+循环语句(for+while)

For 循环首先打印 if-else 语句的错误分支

CANoe中XML编程常用标签语法 ——控制语句 if else 和 for循环

将“for”循环与 if-else 语句相结合,每个“if”语句中都有多个条件