原帖由 KEN6503 于 2011-6-1 07:35 发表
学习写了一个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>