1

我有一个执行 select 语句的存储过程。我创建了另一个存储过程,它调用了早期的存储过程,但可以获取结果。下面是脚本

过程1:

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;

过程2:

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

p_procedure3(644, l_name);

dbms_output.put_line(l_name);

END;

但是什么时候做exex最终执行;

低于错误

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:
4

2 回答 2

2

您的finalexecution程序包含错误。您应该使用ISorAS代替DECLARE. 查看文档以获取更多详细信息。

此外,如果有任何错误,您可以查看all_errors视图以找出导致错误的原因。

于 2013-06-25T06:45:12.400 回答
1

将第二个过程更改为:

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

有关更多详细信息,请参阅在 Oracle 中使用另一个存储过程调用

于 2013-06-25T06:51:56.007 回答