在 Oracle 中执行存储过程

kal*_*lls 3 sql oracle ora-00904

我有一个存储过程,在 Toad for Oracle 上我正在使用

SELECT FROM PKGName.ProcedureName(1,'10/10/2010','10/23/2010',7,7) 
  FROM DUAL
Run Code Online (Sandbox Code Playgroud)

我在这个过程中也有 3 个输出参数,我得到了一个

ORA-00904: PKGName.ProcedureName : 无效标识符

是否也必须在过程调用中提及输出参数?如果是,我该如何使用它?

DCo*_*kie 5

不能在 SELECT 语句中使用过程。函数是(具有适当的返回类型),过程不是。SELECT 列表中的项目必须是表达式,它必须解析为一个值。程序不符合此标准。

是的,您确实需要在参数列表中提及输出变量。该过程将把这些参数设置为一些值,需要为每个参数指定一个输出参数来接收它们。@schurik 向您展示了它通常是如何在 PL/SQL 中完成的。@Datajam 与您在 SQL*Plus 中的做法很接近,但省略了输出参数:

SQL> var num_var number
SQL> var txt_var varchar2(15)
SQL> var txt_var2 varchar2(20)

SQL> exec PKGName.ProcedureName(1,'10/10/2010','10/23/2010',7,7, :num_var, :txt_var, :txt_var2);

PL/SQL procedure successfully completed
num_var
---------------
42
txt_var
-----------------
some text
txt_var2
-------------------
some other text

SQL> 
Run Code Online (Sandbox Code Playgroud)