0

以下のコードでコンパイル エラーが発生するのはなぜですか?? 私はネスティングで間違っていましたか?BEGIN を期待しているときに DECLARE が発生したため、エラーが発生します。

DECLARE
BEGIN
   DECLARE 
      FUNCTION fn_Add1 (p_n1 NUMBER, p_n2 NUMBER) 
      RETURN NUMBER 
      AS 
      BEGIN 
        RETURN fn_Add2(p_n1,p_n2,40);
      END;

   DECLARE
     FUNCTION fn_Add2 (p_n1 NUMBER, p_n2 NUMBER,p_n3 NUMBER) 
     RETURN NUMBER 
     AS 
     BEGIN 
       RETURN (p_n1+p_n2+p_n3); 
     END; 
END;
BEGIN 
   DBMS_OUTPUT.PUT_LINE (fn_Add1(20,30)); 
END;
/
4

1 に答える 1

1

ネストされたBEGINand を削除しDECLAREます - このように動作するはずです:

DECLARE
  FUNCTION fn_Add2 (p_n1 NUMBER, p_n2 NUMBER,p_n3 NUMBER) 
  RETURN NUMBER IS 
  BEGIN 
      RETURN (p_n1+p_n2+p_n3); 
  END; 

  FUNCTION fn_Add1 (p_n1 NUMBER, p_n2 NUMBER) 
  RETURN NUMBER IS 
  BEGIN 
     RETURN fn_Add2(p_n1,p_n2,40);
  END;

BEGIN 
  DBMS_OUTPUT.PUT_LINE (fn_Add1(20,30)); 
END;
/

psIS : そうあるべきだと思いますAS。幸運を!

于 2013-08-12T06:59:17.467 に答える