Esiste un modo in Oracle per determinare se un pacchetto ha stato o è stateless? Non sono a conoscenza di alcuna vista nel dizionario dati che contiene tali informazioni.C'è un modo per determinare se un pacchetto ha uno stato in Oracle?
"ORA-04068: lo stato esistente della stringa di pacchetti è stato scartato" l'errore è piuttosto fastidioso. Può essere eliminato rimuovendo le variabili del pacchetto dal pacchetto. 11g ha introdotto la funzionalità che un pacchetto con variabili che sono tutte costanti in fase di compilazione verrà considerato come apolidi.
Potrei avere due sessioni e compilare il pacchetto in uno e chiamarlo nell'altro e vedere se genera un'eccezione, ma ciò richiede la chiamata di una procedura nel pacchetto, che potrebbe non essere desiderabile.
Prima di rispondere, è possibile spiegare perché vuoi sapere? Non cercare di essere un dolore, solo cercando di capire cosa esattamente vuoi fare. Perché è importante per te sapere se il pacchetto ha lo stato? Inoltre, sei solo interessato a sapere se un pacchetto ha uno stato, e quindi potrebbe, a un certo punto, incontrare ORA-4068? Oppure, per un pacchetto stateful, sei interessato a sapere se lo stato attuale del pacchetto è valido, non valido o non inizializzato? –
I pacchetti di stato possono essere fastidiosi perché se viene effettuata una modifica mentre è aperta una sessione, è possibile che gli utenti ricevano errori. Ho questo problema con un pacchetto, che stavo refactoring per rendere apolidi e avere qualche problema (che sarà l'argomento di una futura domanda SO), quindi sarebbe bello avere un modo semplice per dire se il pacchetto è senza stato o non. Inoltre, quali altri pacchetti nel database sono stateful e potrebbero potenzialmente causare questo problema. – eaolson