好久没有写存储过程啦,看看留个标记.
CREATE OR REPLACE PROCEDURE ModeTest(
p_In IN NUMBER,
p_Out OUT NUMBER,
p_inout IN OUT NUMBER)
IS
v_Local Number;
BEGIN
v_Local := p_In;
p_Out := 7;
p_InOut := 7;
END ModeTest;
/
注意: 如果在SQLPLUS里看详细的信息,show errors
In模式形参可以有默认值 DEFAULT 或者 :=
两种命名方法
名字标识法:
Test_procedure(outPara=>a,intPara=>b,inoutPara=>c);
outPara , intPara , inoutPara 为行参名字
位置标识法:
Test_procedure(a,b,c);
注意:要想直接在sqlplus运行procedure
Variable a number;
Variable b number;
Exec test_procedure(inpara=>100,outpara=>2);
输出结果
以上命令只能用在SQLPLUS的CONSOLE
匿名块每次都编译,有名块第一次编译,以后不用。
删除PROCEDURE : drop procedure_name
一、Debug 存储过程
var rset refcursor;
exec spCLV(:rset,'01/12/2012' , 5, 31, null,null,'UNMATCHED,MATCHED,MATCHEDWITHISSUES',null,null,null,null,0,'',0,0,100);
print rset;