Kann mir jemand helfen, meine pl/sql-Prozedur in ein Paket zu packen? Ich habe versucht, und ich bin zu kämpfen mit ihm:Oracle-Fehler PLS-00323: Unterprogramm oder Cursor ist in einer Paketspezifikation deklariert und muss im Paketkörper definiert werden
Das ist, was ich habe, für mein Paket Spezifikation:
CREATE OR REPLACE PACKAGE film_pkg
IS
title VARCHAR2(100);
PROCEDURE get_films(fname VARCHAR2);
END film_pkg;
--
Das ist mein Paket Körper, wo im in die Probleme bei der Ausführung:
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;
wenn mir jemand die Fehler beheben helfen könnte ich es zu schätzen wissen würde:
Error(4,11): PLS-00323: subprogram or cursor 'GET_FILMS' is declared in a package specification and must be defined in the package body
Als ich versuchte, dass ich den Fehler in der pkg-Stelle bekam: Fehler (4,11): PLS-00323: Unterprogramm oder Cursor 'GET_FILMS' ist in einer Paketspezifikation deklariert und muss im Paket Körper – SqlNoob
@SqlNoob definiert werden - "% type" ist in Ordnung, aber Sie müssen genau die gleiche Deklaration verwenden, Sie können nicht mischen und zusammenpassen, auch wenn Sie wissen, dass sie gleich sind; hast du die spec 'fname IN film gemacht?title% type auch, oder lass das als 'varchar'? Die gesamte Erklärung muss identisch sein. (Und Sie können die Größe für einen Parameter nicht angeben, daher würde 'varchar2 (50 Byte)' einen Fehler verursachen). –