Oracle
 sql >> Database >  >> RDS >> Oracle

Errore Oracle PLS-00323:il sottoprogramma o il cursore è dichiarato in una specifica del pacchetto e deve essere definito nel corpo del pacchetto

Le definizioni della procedura di intestazione e corpo non corrispondono

Nell'intestazione hai:

PROCEDURE get_films(fname VARCHAR2);

Mentre nel corpo:

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

Probabilmente devi solo aggiornare la definizione dell'intestazione con i due parametri OUT aggiuntivi?

Riassumere

  • Assicurati che la definizione dell'intestazione corrisponda a tutti i parametri dell'implementazione del corpo (numero di parametri, nomi dei parametri, ordine dei parametri e tipi di parametri)
  • Secondo il commento di Alex, non mischiare e abbinare il tipo personalizzato (film.title%type ) con il tipo di base (VARCHAR2 ). Scegli l'uno o l'altro.