妈的,不得不吐一下,在网上到处都是答案。结果能搞定的可没几个,下面经过亲测是对的。
首先PL/SQL分为“命令窗体”和”SQL窗体”,我一般都是在”SQL窗体”干活,结果执行存储过程老是不对头。都不知道是不是SQL写错了。哎!最后还是在“命令窗体”搞定了。
还是引用人家的例子吧:
SQL> CREATE OR REPLACE PROCEDURE A(I OUT VARCHAR2, 2 J IN NUMBER, 3 K IN VARCHAR2) AS 4 BEGIN 5 I := TO_CHAR(J) || K; 6 END; 7 / Procedure created SQL> SET SERVEROUTPUT ON SQL> SQL> DECLARE 2 v_i VARCHAR2(2000); 3 BEGIN 4 A(v_i,123,'ABC'); 5 DBMS_OUTPUT.put_line(V_I); 6 END; 7 / 123ABC PL/SQL procedure successfully completed
还是说明一下,免得出错。
1,“/”这个杠杠很重要,就相当于是SQL SERVER 的GO语句。
2,如果你第一次没有输出结果,那么就是因为没有用这句:SET SERVEROUTPUT ON
而在SQL 窗体中怎么执行存储过程
DECLARE v_i VARCHAR2(2000); i VARCHAR2(50); BEGIN i:='test1111'; A(v_i,123,i); DBMS_OUTPUT.put_line(v_i); END;
对于显示执行完成,结果没有出现结果值,不用怕,在这里面就可以看到结果了。
对于用惯了SQL SERVER 不直接显示结果出来,确实有点痛苦。害得我。。不说了。就这样,希望你不会走弯路了。