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;

しかし、いつ exex 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:
4

2 に答える 2

2

手順finalexecutionにエラーがあります。ISまたはASの代わりに使用する必要がありDECLAREます。詳細については、ドキュメントを確認してください。

また、エラーが発生した場合は、all_errorsビューをチェックして、エラーの原因を突き止めることができます。

于 2013-06-25T06:45:12.400 に答える
1

2 番目の手順を次のように変更します。

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 に答える