Quelqu'un peut-il m'aider à mettre ma procédure pl/sql dans un package? J'ai essayé et j'ai du mal avec ça:
Voici ce que j'ai pour la spécification de mon paquet:
CREATE OR REPLACE PACKAGE film_pkg
IS
title VARCHAR2(100);
PROCEDURE get_films(fname VARCHAR2);
END film_pkg;
--
Ceci est mon corps de paquet où im courir dans les problèmes:
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;
si quelqu'un pouvait m'aider à réparer les erreurs, je l'apprécierais:
Error(4,11): PLS-00323: subprogram or cursor 'GET_FILMS' is declared in a package specification and must be defined in the package body
Vos définitions de procédure d'en-tête et de corps ne correspondent pas
Dans l'en-tête, vous avez:
PROCEDURE get_films(fname VARCHAR2);
Considérant que dans le corps:
PROCEDURE get_films(fname IN film.title%type,
r_date OUT film.release_date%type, dur OUT film.duration%type)
Vous avez probablement juste besoin de mettre à jour la définition d'en-tête avec les deux paramètres OUT supplémentaires?
Résumer
film.title%type
) avec le type de base (VARCHAR2
). Choisis l'un ou l'autre."le sous-programme ou le curseur 'M115_EDIT' est déclaré dans une spécification de package et doit être défini dans le corps du package"
J'ai eu cette erreur alors que je travaillais sur mon projet. La raison en était un nom de paramètre qui était dans la procédure définie dans le corps ne correspond pas au nom de paramètre correspondant dans le corps.
mon paramètre market_code est différent dans le corps par rapport à la spécification où il est défini comme code_market_code.error est dû à cette différence. le problème mentionné ci-dessus.
deux paramètres clairement mentionnés dans votre corps implémentation de la procédure 'r_date' et 'dur' ne sont pas définis dans la spécification. L'erreur est due à cette différence entre le corps et la spécification.
" nom du paramètre qui était dans la procédure définie dans le corps ne correspond pas au nom du paramètre correspondant dans le corps."