oracle的return、exit、continue的区别

函数、预存中遇到return就会中断整个函数、预存,return后的代码不会再执行!

exit是退出整个for循环,即结束该for循环,不执行该for循环了!

continue是退出该for循环的当前这一次,开始下一次,直到该for循环结束!

以下2个代码块都是印证return 的作用。代码块一没加“if··· then  end if;”代码块,而代码块二加上了“if··· then  end if;”代码块,两者的运行结果都是·一样的。

-----代码块一:
begin--一定要加上begin  end;因為oracle是代碼塊~~~
for ii in 1..5 loop  
  sys.dbms_output.put_line('此處是return'); 
  return;
  sys.dbms_output.put_line('處於return後、當前循環里的代碼不執行!'); 
end loop;
sys.dbms_output.put_line('處於return後、非循環里的代碼不執行!!');
end;
------------------------------------------------
-----代码块二:
begin
for i in 1..5 loop
  if i=2 then
    sys.dbms_output.put_line('此處是return'); 
    return; 
    sys.dbms_output.put_line('處於return後、當前循環里的代碼不執行!');
  end if;  
end loop;
sys.dbms_output.put_line('處於return後、非循環里的代碼不執行!!');
end;

以上代码块一、代码块二的运行结果都是·一样的:

所以,函数、预存中遇到return就会中断整个函数、预存,return后的代码不会再执行!

以下2个代码块都是印证exit 的作用。代码块一没加“if··· then  end if;”代码块,而代码块二加上了“if··· then  end if;”代码块,两者的运行结果都是·一样的。

--代码块一:
begin
for j in 1..5 loop 
  sys.dbms_output.put_line('此處是exit');
  exit;
  sys.dbms_output.put_line('處於exit後、當前循環里的代碼不執行!');   
end loop;
sys.dbms_output.put_line('處於exit後、非循環里的代碼也執行了~~');
end;
---------------------------------------------
--代码块二:
begin
for j in 1..5 loop
  if j=2 then
    sys.dbms_output.put_line('此處是exit');
    exit;
    sys.dbms_output.put_line('處於exit後、當前循環里的代碼不執行!'); 
  end if; 
end loop;
sys.dbms_output.put_line('處於exit後、非循環里的代碼也執行了~~');
end;

以上代码块一、代码块二的运行结果都是·一样的:

所以,exit是退出整个for循环,即结束该for循环,不执行该for循环了!

以下2个代码块都是印证continue 的作用。代码块一没加“if··· then  end if;”代码块,而代码块二加上了“if··· then  end if;”代码块,两者的运行结果是不一样的:

--代码块一
begin
  for k in 1..5 loop
    sys.dbms_output.put_line('此處是continue');
    continue;
    sys.dbms_output.put_line('處於continue後、當前循環里的代碼不執行!');
  end loop;
  sys.dbms_output.put_line('處於continue後、非循環里的代碼也執行了~~~~~');
end;

--代码块二
begin
  for k in 1..5 loop
    if k=3 then
      sys.dbms_output.put_line('此處是continue');
      continue;
      sys.dbms_output.put_line('處於continue後、當前循環里的代碼不執行!!');
    end if;
  end loop;
  sys.dbms_output.put_line('處於continue後、非循環里的代碼也執行了~~~~~');
end;

代码块一的结果:

代码块二的结果:

所以,continue是退出该for循环的当前这一次,开始下一次,直到该for循环结束!

 

posted @ 2021-05-19 10:21  枭二熊  阅读(815)  评论(0编辑  收藏  举报