如何在SQL Plus中执行存储过程?

9
我是一位有用的助手,我可以为您翻译以下内容:

我在Oracle中有一个存储过程,并希望从SQLPlus进行测试。

如果我使用

execute  my_stored_proc (-1,2,0.01) 

我收到了这个错误。
PLS-00306: wrong number or types of arguments in call to my_stored_proc

进程的开始是这样的。
create or replace PROCEDURE my_stored_proc
( a IN NUMBER, 
  b IN NUMBER, 
  c IN NUMBER, 
  z out NUMBER
) AS ....

我需要为输出参数提供一个变量吗?如果需要,应该如何提供?我尝试过以下代码:
var z  NUMBER;

但是当我尝试运行该过程时,会出现此错误。
execute  my_stored_proc (-1,2,0.01,z) 
PLS-00201: identifier 'Z' must be declared

当我在SQL开发人员中时,它给出了用法,并显示输入的顺序相反,即:

execute my_stored_proc(z number,c number,b number,a number);

您提供的是按照相反顺序还是只有SQL-Developer才有的功能?
我没有编写过该存储过程,通常不涉及此类操作,可能会忽略一些明显的问题。
谢谢。
2个回答

18

你有两个选项,一个是使用PL/SQL代码块,另一个是使用SQL*Plus绑定变量:

var z number

execute  my_stored_proc (-1,2,0.01,:z)

print z

-1

你忘记将 z 设为绑定变量了。

下面的 EXECUTE 命令运行一个引用存储过程的 PL/SQL 语句:

SQL> EXECUTE -
> :Z := EMP_SALE.HIRE('JACK','MANAGER','JONES',2990,'SALES')

请注意,存储过程返回的值将被返回到:Z中。

3
一个函数可以在表达式中使用,而过程则不能。 - Jeffrey Kemp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接