programing

Oracle 오류 PLS-00323: 하위 프로그램 또는 커서가 패키지 사양으로 선언되었으며 패키지 본문에 정의되어야 합니다.

skycolor 2023. 6. 21. 22:27
반응형

Oracle 오류 PLS-00323: 하위 프로그램 또는 커서가 패키지 사양으로 선언되었으며 패키지 본문에 정의되어야 합니다.

누가 내 pl/sql 절차를 패키지에 넣는 것을 도와줄 수 있습니까?저는 노력했고 그것에 어려움을 겪고 있습니다.

제 패키지 사양은 다음과 같습니다.

CREATE OR REPLACE PACKAGE film_pkg
IS
title VARCHAR2(100);
PROCEDURE get_films(fname VARCHAR2);
END film_pkg;

--

이것은 내가 문제에 부딪히는 패키지 본문입니다.

  CREATE OR REPLACE PACKAGE BODY film_pkg
IS
   PROCEDURE get_films (fname    IN     film.title%TYPE,
                        r_date      OUT film.release_date%TYPE,
                        dur         OUT film.duration%TYPE)
   AS
   BEGIN
      SELECT release_date, duration
        INTO r_date, dur
        FROM FILM
       WHERE title = fname;
   EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         r_date := '';
         dur := '';
   END get_films;
END film_pkg;

오류를 해결하는 데 도움을 줄 수 있는 사람이 있다면 감사하겠습니다.

Error(4,11): PLS-00323: subprogram or cursor 'GET_FILMS' is declared in a package specification and must be defined in the package body

머리글과 본문 절차 정의가 일치하지 않습니다.

헤더에는 다음이 있습니다.

PROCEDURE get_films(fname VARCHAR2);

반면에 몸 안에서는:

PROCEDURE get_films(fname IN film.title%type, 
   r_date OUT film.release_date%type, dur OUT film.duration%type)

헤더 정의를 두 개의 추가 OUT 매개 변수로 업데이트하기만 하면 됩니까?

요약하기

  • 헤더 정의가 본문 구현의 모든 매개 변수(매개 변수 수, 매개 변수 이름, 매개 변수 순서 및 매개 변수 유형)와 일치하는지 확인합니다.
  • Alex의 코멘트에 따라 커스텀 유형을 혼합하여 일치시키지 마십시오.film.title%type) 기본 유형(VARCHAR2둘 중 하나를 선택합니다.

"하위 프로그램 또는 커서 'M115_ED''IT'는 패키지 사양으로 선언되며 패키지 본문에 정의되어야 합니다."

제가 프로젝트를 진행하는 동안 이 오류가 발생했습니다.그 이유는 본문에 정의된 프로시저 내부에 있는 매개 변수 이름이 본문에 있는 해당 매개 변수 이름과 일치하지 않았기 때문입니다.

내 사양:

내 몸.

my market_code 매개변수는 sub_market_code로 정의된 사양과 비교했을 때 본문에서 다릅니다. 이 차이로 인해 오류가 발생했습니다.나는 사양의 sub_market_code 매개변수를 market_code로 변경하여 본문과 일치하도록 했고 이것으로 위에서 언급한 문제를 해결했습니다.

절차 'r_date' 및 'procedure'의 본문 구현에서 언급된 2개의 매개 변수는 사양에 정의되어 있지 않습니다. 오류는 본문과 사양 간의 이러한 차이로 인해 발생합니다.

"본문에 정의된 절차 내부의 매개 변수 이름이 본문의 해당 매개 변수 이름과 일치하지 않습니다."

언급URL : https://stackoverflow.com/questions/26525204/oracle-error-pls-00323-subprogram-or-cursor-is-declared-in-a-package-specificat

반응형