如何从SQL Plus执行存储过程?

时间:2010-01-22 06:14:51

标签: sql oracle stored-procedures

我在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

我没有写过程序,我通常不会处理它们,所以我可能会遗漏一些明显的东西。

谢谢

2 个答案:

答案 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