• 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循环结束!

  • 相关阅读:
    Vue 实时过去 页面宽高
    css 全网页呈现灰色
    Vue 省市区三级联动(基于ElementUI)
    小程序 节流函数 (防止按钮重复点击)
    Vs Code 自动编译TS
    VS2019 调试时出现:正试图在 os 加载程序锁内执行托管代码
    SQLServer 日期函数大全
    SQL 日期函数
    SQL Server 查询性能异常语句
    SQL中多表连接delete删除表数据
  • 原文地址:https://www.cnblogs.com/168-h/p/14783999.html
Copyright © 2020-2023  润新知