存储过程如何返回?谢谢! create or replace procedure(v_str1 in varchar2,v_str2 out varchar2) as...调用的时候,传入两个变量,第一个是传入的参数,第二个是存放返回的数据。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参数中 使用out a char(1)过程执行后就可以用a的值 16:51:14 SQL> create or replace procedure test(a in number,b out number)16:51:27 2 as16:51:27 3 begin16:51:27 4 dbms_output.put_line(a);16:51:27 5 b:=a*2;16:51:27 6 end;16:51:27 7 /过程已创建。已用时间: 00: 00: 00.1516:51:28 SQL> variable b number16:51:37 SQL> exec test(5,:b)PL/SQL 过程已成功完成。已用时间: 00: 00: 00.1516:51:46 SQL> select :b from dual; :B---------- 10已用时间: 00: 00: 00.00 16:48:53 SQL> create or replace procedure p_demo(v_in in varchar2,v_out out varchar2) as16:49:02 2 begin16:49:03 3 if v_in > '10' then16:49:03 4 v_out:=v_in||'>10';16:49:03 5 else16:49:03 6 v_out:=v_in||'<=10';16:49:03 7 end if;16:49:03 8 end p_demo;16:49:03 9 /过程已创建。已用时间: 00: 00: 00.1316:49:04 SQL> set serveroutput on;16:50:11 SQL> declare16:50:20 2 v_return varchar2(20);16:50:27 3 begin16:50:32 4 p_demo('5',v_return);16:50:36 5 dbms_output.put_line(v_return);16:50:40 6 P_demo('15',v_return);16:50:44 7 dbms_output.put_line(v_return);16:50:46 8 end;16:50:50 9 /5>1015>10PL/SQL 过程已成功完成。已用时间: 00: 00: 00.3116:50:51 SQL> 随便一写,处理上有问题,应该传入number,:) 呵呵,是我没说明白。我是希望过程执行过程中遇到某中情况时直接退出,不再执行后面的代码。我现在是用raise_application_error退出的,可这样没办法得到返回值(返回值有多个)。 17:21:44 SQL> create or replace procedure p_demo17:21:54 2 (v_in number,v_out1 out varchar2,v_out2 out varchar2) as17:22:01 3 v_err1 exception;17:22:09 4 v_err2 exception;17:22:09 5 begin17:22:09 6 if v_in<10 then17:22:09 7 raise v_err1;17:22:09 8 end if;17:22:09 9 if v_in>10 and v_in<100 then17:22:09 10 v_out1:='ok';17:22:09 11 v_out2:='true';17:22:09 12 end if;17:22:09 13 if v_in>100 then17:22:09 14 raise v_err2;17:22:09 15 end if;17:22:09 16 exception 17:22:09 17 when v_err1 then17:22:09 18 v_out1:='<10';17:22:09 19 v_out2:='false';17:22:09 20 when v_err2 then17:22:09 21 v_out1:='>100';17:22:09 22 v_out2:='false';17:22:09 23 end p_demo;17:22:09 24 /过程已创建。17:23:29 SQL> set serveroutput on17:23:39 SQL> declare17:23:42 2 out1 varchar2(10);17:23:42 3 out2 varchar2(20);17:23:42 4 begin17:23:42 5 p_demo(5,out1,out2);17:23:42 6 dbms_output.put_line(out1||chr(10)||chr(13)||out2);17:23:46 7 end;17:23:47 8 /<10falsePL/SQL 过程已成功完成。已用时间: 00: 00: 00.4717:23:47 SQL> 请问大侠为什么的Oracle数据库连不上? 这些系统表,大家都常用那俩个呢,每人给我讲解俩个好么?? 谢谢了!! 连接查询然后报未明确定义列 高手求救 如何查找long中的数据??? pro*c中如何用结构体插入数据啊 数据库支持问题 一个对我来说很难的问题????创建数据库的问题 真的很难 TNS Listener错误,客户端连接太多,超过限制,如何解决呢? 关于查询组合数的SQL 很难理解的一个参数 紧急求助!关于oracle的查询语句问题
过程执行后就可以用a的值
16:51:27 2 as
16:51:27 3 begin
16:51:27 4 dbms_output.put_line(a);
16:51:27 5 b:=a*2;
16:51:27 6 end;
16:51:27 7 /过程已创建。已用时间: 00: 00: 00.15
16:51:28 SQL> variable b number
16:51:37 SQL> exec test(5,:b)PL/SQL 过程已成功完成。已用时间: 00: 00: 00.15
16:51:46 SQL> select :b from dual; :B
----------
10已用时间: 00: 00: 00.00
16:49:02 2 begin
16:49:03 3 if v_in > '10' then
16:49:03 4 v_out:=v_in||'>10';
16:49:03 5 else
16:49:03 6 v_out:=v_in||'<=10';
16:49:03 7 end if;
16:49:03 8 end p_demo;
16:49:03 9 /过程已创建。已用时间: 00: 00: 00.13
16:49:04 SQL> set serveroutput on;
16:50:11 SQL> declare
16:50:20 2 v_return varchar2(20);
16:50:27 3 begin
16:50:32 4 p_demo('5',v_return);
16:50:36 5 dbms_output.put_line(v_return);
16:50:40 6 P_demo('15',v_return);
16:50:44 7 dbms_output.put_line(v_return);
16:50:46 8 end;
16:50:50 9 /
5>10
15>10PL/SQL 过程已成功完成。已用时间: 00: 00: 00.31
16:50:51 SQL>
:)
我是希望过程执行过程中遇到某中情况时直接退出,不再执行后面的代码。
我现在是用raise_application_error退出的,可这样没办法得到返回值(返回值有多个)。
17:21:54 2 (v_in number,v_out1 out varchar2,v_out2 out varchar2) as
17:22:01 3 v_err1 exception;
17:22:09 4 v_err2 exception;
17:22:09 5 begin
17:22:09 6 if v_in<10 then
17:22:09 7 raise v_err1;
17:22:09 8 end if;
17:22:09 9 if v_in>10 and v_in<100 then
17:22:09 10 v_out1:='ok';
17:22:09 11 v_out2:='true';
17:22:09 12 end if;
17:22:09 13 if v_in>100 then
17:22:09 14 raise v_err2;
17:22:09 15 end if;
17:22:09 16 exception
17:22:09 17 when v_err1 then
17:22:09 18 v_out1:='<10';
17:22:09 19 v_out2:='false';
17:22:09 20 when v_err2 then
17:22:09 21 v_out1:='>100';
17:22:09 22 v_out2:='false';
17:22:09 23 end p_demo;
17:22:09 24 /过程已创建。
17:23:29 SQL> set serveroutput on
17:23:39 SQL> declare
17:23:42 2 out1 varchar2(10);
17:23:42 3 out2 varchar2(20);
17:23:42 4 begin
17:23:42 5 p_demo(5,out1,out2);
17:23:42 6 dbms_output.put_line(out1||chr(10)||chr(13)||out2);
17:23:46 7 end;
17:23:47 8 /
<10falsePL/SQL 过程已成功完成。已用时间: 00: 00: 00.47
17:23:47 SQL>