我在oracle中有一个存储过程,想要从SQLPlus中测试它。
如果我使用
execute my_stored_proc (-1,2,0.01)
我收到此错误
PLS-00306: wrong number or types of arguments in call to my_stored_proc
proc的开头就是这个
create or replace PROCEDURE my_stored_proc
( a IN NUMBER,
b IN NUMBER,
c IN NUMBER,
z out NUMBER
) AS ....
我是否需要为out参数提供一个var,是这样的?我试过了:
var z NUMBER;
但是当我尝试运行proc
时会出现此错误execute my_stored_proc (-1,2,0.01,z)
PLS-00201: identifier 'Z' must be declared
当我在SQL-Developer中时,它给了我用法,它以相反的顺序显示输入,即:
execute my_stored_proc(z number,c number,b number,a number);
您是以相反的顺序提供它们还是只是使用SQL-Developer
我没有写过程序,我通常不会处理它们,所以我可能会遗漏一些明显的东西。
谢谢
答案 0 :(得分:15)
您有两个选项,PL / SQL块或SQL * Plus绑定变量:
var z number
execute my_stored_proc (-1,2,0.01,:z)
print z
答案 1 :(得分:-1)
您忘了将z作为绑定变量。
以下EXECUTE命令运行引用存储过程的PL / SQL语句:
SQL> EXECUTE -
> :Z := EMP_SALE.HIRE('JACK','MANAGER','JONES',2990,'SALES')
请注意,存储过程返回的值将返回到:Z