Perché i vecchi errori di qualcuno sono sempre novità per me, io aggiungo i miei 3 centesimi:
Qualcuno cancellato la loro specifica, ma aveva ancora il corpo (No, non so come) e "didn Non voglio dover digitare tutto in quel modo ".
Così li ho mostrato come generare le specifiche dal corpo:
- Copiare il corpo in un foglio di lavoro.
- Inserire un'intestazione vuota sopra il corpo con il nome del pacchetto.
- Compila.
- [Se si verifica un errore o meno,] Fare clic con il pulsante destro del mouse sul corpo del pacchetto nell'albero dei pacchetti e selezionare "Sincronizza specifica e corpo".
- Selezionare gli oggetti da esporre nella specifica e fare clic su OK.
- "magia accade"
Solo la magia non è accaduto - e tutto è andato rosso ... con PLS-00323 errori.
SQL Developer popola la specifica del pacchetto estraendo la procedura e le intestazioni di funzione dal codice stesso, quindi non dovresti preoccuparti di cose come la psiche di liek. Presenta un elenco di oggetti da aggiungere al pacchetto/specifica e tu scegli quali aggiungere.
Abbiamo selezionato le procedure e le funzioni corrette, ma è stato compilato con errori. Ancora. E di nuovo.
Si scopre che le funzioni che hanno generato errori sono state definite nel corpo del pacchetto con DETERMINISTIC - quando l'editor di SQL Dev ha eseguito la sincronizzazione, ha lasciato fuori parola. Questo è abbastanza significativo.
In ogni caso, rivisto, incollato DETERMINISTIC nelle funzioni specifiche prima del punto e virgola, salvato (ricompilato), e quindi era di nuovo magico.
Ci si aspetterebbe che lo sviluppatore SQL esegua il lavoro completo anziché un lavoro half -....
Potrebbe essere troppo ovvio, ma ricontrollare se il nome della procedura è esattamente lo stesso, così come tutti i parametri che riceve. –
Capito, solo una lettera mancata dal nome di un parametro. – Amit
stesso errore qui intorno a mezz'ora a che fare con quello. molte grazie. – BlaShadow