最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracle中Return和exit的区别

来源:动视网 责编:小采 时间:2020-11-09 07:52:20
文档

Oracle中Return和exit的区别

Oracle中Return和exit的区别:在Oracle存储过程中, 使用Return 时 ,如果执行到Return语句,会跳出整个语句(如果是循环,会跳出整个循环),将不再执行, 也就是结束了整个存储过程。 下面就用一个例子来说明一下 ,这个存储过程是根据员工号,查出员工姓名,为了得到直接的效果,我在
推荐度:
导读Oracle中Return和exit的区别:在Oracle存储过程中, 使用Return 时 ,如果执行到Return语句,会跳出整个语句(如果是循环,会跳出整个循环),将不再执行, 也就是结束了整个存储过程。 下面就用一个例子来说明一下 ,这个存储过程是根据员工号,查出员工姓名,为了得到直接的效果,我在


在Oracle存储过程中, 使用Return 时 ,如果执行到Return语句,会跳出整个语句(如果是循环,会跳出整个循环),将不再执行, 也就是结束了整个存储过程。 下面就用一个例子来说明一下 ,这个存储过程是根据员工号,查出员工姓名,为了得到直接的效果,我在

在Oracle存储过程中,使用Return 时,如果执行到Return语句,会跳出整个语句(如果是循环,会跳出整个循环),将不再执行,也就是结束了整个存储过程。

下面就用一个例子来说明一下 ,这个存储过程是根据员工号,查出员工姓名,为了得到直接的效果,我在特定的地方进行了语句的打印,写的有点简单,忘大家谅解:

CREATE OR REPLACE PROCEDURE pro_emp1
( v_eno IN NUMBER,
 v_resultcode OUT NUMBER,
 v_resulterrinfo OUT VARCHAR2
) 
IS
 iv_eno emp.empno%type ;
 iv_name emp.ename%type;
 
BEGIN
 iv_eno:=v_eno; ---- 把入参的变量赋给定义的变量
 v_resultcode :=-1;
 
 BEGIN 
 select ename into iv_name 
 from emp 
 where empno=iv_eno; 
 dbms_output.put_line('雇员名:'||iv_name); 
 EXCEPTION
 WHEN OTHERS THEN
 v_resultcode:=SQLCODE;
 v_resulterrinfo :='没有想要的雇员名 :' ||SQLERRM;
 RETURN; 
 END; 
 
 BEGIN 
 dbms_output.put_line('执行到大Begin 中的小Begin 中了方法了'); 
 END;
 
 dbms_output.put_line('执行到大Begin的末尾了');
END; 


执行这条存储过程,查询不存在的员工,可以看到后面的Beign语句以及打印语句,将不在执行:

SQL> var v_resultcode number;
SQL> var v_resultinfo varchar2;
SQL> exec pro_emp1 (7789,:v_resultcode,:v_resultinfo);
 
PL/SQL procedure successfully completed
v_resultcode
---------
100
v_resultinfo
---------
没有想要的雇员名 :ORA-01403: 未找到数据 	

输入可以查询到的员工号码:

SQL> exec pro_emp1 (7788,:v_resultcode,:v_resultinfo);
 
雇员名:SCOTT
执行到大Begin 中的小Begin 中了方法了
执行到大Begin的末尾了
 
PL/SQL procedure successfully completed
v_resultcode
---------
-1
v_resultinfo
---------

下面是从网上摘来的,有兴趣的人可以看看:

 create or replace procedure Test5(o_cellphone in varchar2) is

 v_cellphone cc_quiz_stat.cellphone %type;

 v_name cc_quiz_stat %rowtype;

 v_state cc_quiz_stat.state %type;

 begin

 declare

 cursor cur_cc is

 select * from cc_quiz_stat;

 cursor cur_jc(v_n varchar2) is

 select state from cc_quiz_stat;

 begin

 open cur_cc;

 loop

 fetch cur_cc

 into v_name;

 exit when cur_cc%notfound;

 open cur_jc(o_cellphone);

 loop

 fetch cur_jc

 into v_state;

 exit when cur_jc %notfound;

 if (o_cellphone = v_name.cellphone) then

 return;

 else

 dbms_output.put_line('手机号' || v_name.cellphone || '省份' ||

 v_state);

 end if;

 end loop;

 close cur_jc;

 end loop;

 close cur_cc;

 end;

 end Test5;

执行结果:

手机号18900000000省份全国

 手机号18900000000省份南京

 手机号18900000000省份天津

 手机号18900000000省份 上海

 手机号18900000000省份北京


 create or replace procedure Test5(o_cellphone in varchar2) is

 v_cellphone cc_quiz_stat.cellphone %type;

 v_name cc_quiz_stat %rowtype;

 v_state cc_quiz_stat.state %type;

 begin

 declare

 cursor cur_cc is

 select * from cc_quiz_stat;

 cursor cur_jc(v_n varchar2) is

 select state from cc_quiz_stat;

 begin

 open cur_cc;

 loop

 fetch cur_cc

 into v_name;

 exit when cur_cc%notfound;

 open cur_jc(o_cellphone);

 loop

 fetch cur_jc

 into v_state;

 exit when cur_jc %notfound;

 if (o_cellphone = v_name.cellphone) then

 exit;

 else

 dbms_output.put_line('手机号' || v_name.cellphone || '省份' ||

 v_state);

 end if;

 end loop;

 close cur_jc;

 end loop;

 close cur_cc;

 end;

 end Test5;

执行结果:

 手机号18900000000省份全国

 手机号18900000000省份南京

 手机号18900000000省份天津

 手机号18900000000省份 上海

 手机号18900000000省份北京

 手机号18900000002省份全国

 手机号18900000002省份南京

 手机号18900000002省份天津

 手机号18900000002省份 上海

 手机号18900000002省份北京

 手机号18900000003省份全国

 手机号18900000003省份南京

 手机号18900000003省份天津

 手机号18900000003省份 上海

 手机号18900000003省份北京

 手机号18900000004省份全国

 手机号18900000004省份南京

 手机号18900000004省份天津

 手机号18900000004省份 上海

 手机号18900000004省份北京


return 跳出整个循环,本循环后面的不再执行,

exit 跳出本次循环,下次继续执行本次循环

文档

Oracle中Return和exit的区别

Oracle中Return和exit的区别:在Oracle存储过程中, 使用Return 时 ,如果执行到Return语句,会跳出整个语句(如果是循环,会跳出整个循环),将不再执行, 也就是结束了整个存储过程。 下面就用一个例子来说明一下 ,这个存储过程是根据员工号,查出员工姓名,为了得到直接的效果,我在
推荐度:
标签: 中的 区别 的区别
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top