Oracle
 sql >> Base de données >  >> RDS >> Oracle

Erreur Oracle PLS-00323 :le sous-programme ou le curseur est déclaré dans une spécification de package et doit être défini dans le corps du package

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);

Alors 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 de l'en-tête avec les deux paramètres OUT supplémentaires ?

Pour résumer

  • Assurez-vous que la définition de l'en-tête correspond à tous les paramètres de l'implémentation du corps (nombre de paramètres, noms de paramètres, ordre des paramètres et types de paramètres)
  • Selon le commentaire d'Alex, ne mélangez pas le type personnalisé (film.title%type ) avec le type de base (VARCHAR2 ). Choisissez l'un ou l'autre.