oracle多个输出参数,想输出 两个out 参数

博客作者分享了关于PL/SQL的一个存储过程创建及调用的示例,过程中遇到了输出参数未按预期显示的问题。经过测试,发现能够正确输出结果,但只显示了'aa'。实际上,输出的完整信息是'recordaa1',这表明过程已成功执行。
摘要由CSDN通过智能技术生成

原帖由 KEN6503 于 2011-6-1 07:35 发表 thread-1442353-1-1.html

学习写了一个plsql, code如下:

CREATE OR REPLACE PROCEDURE HR.sp_test_in (id_in   IN     NUMBER,

mes_o      OUT VARCHAR2,

o_cnt      OUT NUMBER)

AS

v_cnt   NUMBER := 0;

v_mes   VARCHAR2 (2000);

BEGIN

INSERT INTO t

VALUES (id_in);

v_cnt := v_cnt + 1;

v_mes := 'record';

o_cnt := v_cnt;

mes_o := v_mes;

EXCEPTION

WHEN OTHERS

THEN

null;

END;

DECLARE

v_o_ms    VARCHAR2 (2000);

v_o_cnt   NUMBER;

v_id      NUMBER := 1;

BEGIN

sp_test_in (v_id, v_o_ms, v_o_cnt);

DBMS_OUTPUT.put_line (v_o_ms ||‘aa’|| v_o_cnt);

END;

想输出俩个参数, 可是, 结果是 输出的是aa。

哪位老师帮忙看一下。

谢谢

如下是我的测试过程!

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE        10.2.0.1.0        Production

SQL> create table t(id_in number);

Table created

SQL>

SQL> CREATE OR REPLACE PROCEDURE sp_test_in(id_in IN NUMBER,

2                                         mes_o OUT VARCHAR2,

3                                         o_cnt OUT NUMBER) AS

4    v_cnt NUMBER := 0;

5    v_mes VARCHAR2(2000);

6  BEGIN

7

8    INSERT INTO t VALUES (id_in);

9

10    v_cnt := v_cnt + 1;

11    v_mes := 'record';

12    o_cnt := v_cnt;

13    mes_o := v_mes;

14

15  EXCEPTION

16    WHEN OTHERS THEN

17         NULL;

18  END;

19  /

Procedure created

SQL>

SQL> DECLARE

2     v_o_ms    VARCHAR2 (2000);

3     v_o_cnt   NUMBER;

4     v_id      NUMBER := 1;

5  BEGIN

6     sp_test_in (v_id, v_o_ms, v_o_cnt);

7     DBMS_OUTPUT.put_line (v_o_ms || ' aa '|| v_o_cnt);

8  END;

9  /

record aa 1

PL/SQL procedure successfully completed

SQL>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值