Wie bekomme ich "ORA-00904: : Ungültiger identifier" von einem gültigen Paket?

Ich habe eine Prozedur, die gültig ist und hat es in einem insert..select-Anweisung. Jetzt gibt es einen Fall, wo die Ausführung dieses Verfahrens produziert "ORA-00904: : Ungültiger Bezeichner" Fehler aus dieser Erklärung. Wie ist das theoretisch möglich? Es gibt keine Trigger oder dynamischen SQL.

Auch die ORA-00904 Texte in sqlerrm ist ohne Zeiger zu einem spezifischen Bezeichner, der Oracle ist der Auffassung ungültig.

Oracle version 9.2.0.8

edit2:

Stellt sich heraus, es war ein problem mit einer Funktion, die aufgerufen wurde, die in diesem select (ersetzt es mit Konstanten und alles funktionierte). Wahrscheinlich war das der Grund, dass die ORA-00904 nicht geben, eine Kennung. Doch die Frage bleibt - wie kann das sein, dass die vorkompilierten code und keine dynamische sql gibt diesen Fehler?

Können Sie einige Beispiel-code, bitte!
Gibt es irgendwelche Ansichten? Von dem, was Sie gesagt haben, ich Schätze, du hast ein exception-handler für alle Fehler (when others) , druckt SQLERRM; wenn Sie nicht, dass die exception wird ausgelöst, und trotzdem geben mehr Informationen, wo es herkommt.
Die Funktion, die Sie identifiziert, und alles, was genannt hatte seinerseits keine dynamischen SQL-oder? Tut alles, was in der Kette haben eine authid current_user - Klausel, kann das Auswirkungen auf das Verhalten zwischen compile-und Laufzeit (Privilegien und Auflösung)? Sind Sie sich auf eine Rolle-gewährt, privs, die nicht in den Paketen?
"Jetzt gibt es einen Fall, wo...", bedeutet das, dass es nicht immer dieser Fehler?
Es produziert, dass Fehler nur in einem bestimmten Fall. Wir arbeiteten um, (ohne code-änderungen, keine änderungen der Daten), und wir haben nicht gesehen, dass problem mehr.

InformationsquelleAutor jva | 2011-01-18

Schreibe einen Kommentar