首页 文章

从存储过程返回结果

提问于
浏览
1

我有一个存储过程来执行select语句 . 我创建了另一个存储过程,它调用了早期的存储过程,但是能够获得结果 . 以下是脚本

PROC1:

create or replace
PROCEDURE p_procedure3(custid IN number, custname OUT varchar2) IS
BEGIN

SELECT firstname 
INTO custname
FROM customer_s
WHERE customerid = custid;

END p_procedure3;

PROC2:

create or replace
procedure finalexecution
DECLARE
l_name varchar2(20);
BEGIN

p_procedure3(644, l_name);

dbms_output.put_line(l_name);

END;

但什么时候做exina finalexecution;

低于错误

Error starting at line 8 in command:
exec finalexecution
Error report:
ORA-06550: line 1, column 7:
PLS-00905: object CIMNEWUSER.FINALEXECUTION is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

2 回答

  • 1

    将第二个过程更改为:

    create or replace
    procedure finalexecution as
      l_name varchar2(20):='';
    BEGIN
      p_procedure3(644, l_name);
      dbms_output.put_line(l_name);
    END;
    

    有关详细信息,请参阅Call a stored procedure with another in Oracle

  • 2

    您的 finalexecution 程序包含错误 . 您应该使用 ISAS 而不是 DECLARE . 有关详细信息,请查看documentaion .

    如果有任何错误,您可以检查 all_errors 视图以找出导致错误的原因 .

相关问题