Ho il sospetto che stai riportando solo l'ultimo errore in una pila come questo:
ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "schema.package" has been invalidated
ORA-04065: not executed, altered or dropped package body "schema.package"
ORA-06508: PL/SQL: could not find program unit being called: "schema.package"
Se è così, è perché your package is stateful:
I valori delle variabili, costanti, e cursori che un pacchetto dichiara (nella sua specifica o nel corpo) comprende il suo pacchetto stato. Se un pacchetto PL/SQL dichiara almeno una variabile, costante, o cursore, il pacchetto è stateful; altrimenti, è senza stato.
quando si ricompila lo stato è perduto:
Se il corpo di un pacchetto stateful istanziato viene ricompilato (sia esplicitamente, con il "ALTER istruzione package", o implicitamente), il la successiva chiamata di un sottoprogramma nel pacchetto causa Oracle Database per ignorare lo stato del pacchetto esistente e sollevare l'eccezione ORA-04068.
Dopo PL/SQL solleva l'eccezione, un riferimento al pacchetto provoca Oracle Database di ri-creare un'istanza del pacchetto, che ri-inizializza esso ...
non si può evitare questo se il tuo pacchetto ha stato. Penso che sia abbastanza raro avere davvero bisogno di un pacchetto per essere stateful, quindi dovresti rivedere tutto ciò che hai dichiarato nel pacchetto, ma al di fuori di una funzione o procedura, per vedere se è veramente necessario a quel livello. Dato che sei su 10g, ciò include costanti, non solo variabili e cursori.
Tuttavia, l'ultimo paragrafo della documentazione citata indica che la prossima volta che si fa riferimento al pacchetto nella stessa sessione, non si otterrà l'errore e funzionerà normalmente (finché non si ricompila nuovamente).
Sei anche ottenere qualcosa come 'stato del pacchetto esistente era stato scartato '? Se è così, eseguirlo una seconda volta nella stessa sessione dovrebbe funzionare. Ma ciò suggerirebbe che il tuo pacchetto avesse qualche stato, cioè una variabile dichiarata nel pacchetto piuttosto che in una procedura (e niente a che fare con 'dbms_output'). –