Die Nachricht, die mich verrückt macht, ist ORA-01008 - Not all variables bound
.
Gibt es eine Möglichkeit zu wissen, welchen der 42 möglichen Variablennamen ich falsch geschrieben habe, ohne auf den Monitor zu starren, bis meine Augen herausspringen?
Update: Ich verwende ADO.NET
, um auf die Datenbank zuzugreifen. Vielleicht verliert es einige Informationen in Oracle-Ausnahmen, wie @Justin Cave vorgeschlagen hat. Aber ich bin sicher, dass der Parametername auch in SQL Plus nie erscheint.
Ich kenne keine Möglichkeit, Oracle dazu zu bringen, den Fehler genauer zu machen. Vielleicht wird eine zukünftige Version diese Fehlermeldung verbessern.
Anstatt nur darauf zu starren, gibt es andere Dinge, die du ausprobieren kannst. Konvertieren Sie beispielsweise jede Variable in der SQL-Anweisung einzeln in eine Literale, bis der Fehler verschwindet. Wenn möglich, erzeuge die Liste der Variablennamen, anstatt sie manuell einzugeben.
Im Allgemeinen liefert Oracle die Zeilen- und Spaltennummer aller Fehler, aber es hängt von der jeweiligen API ab, die Sie verwenden (es sei denn, Sie schreiben eine OCI-Anwendung, was wahrscheinlich unwahrscheinlich ist), ob und wie diese APIs werden aufgerufen. Da die Antwort wahrscheinlich API-spezifisch ist, welche API verwenden Sie und wie sieht Ihr Code aus, wenn der Fehler auftritt (z. B. JDBC, ODBC, OLE DB usw.)?
Wenn ich beispielsweise einen PL / SQL-Block mit einem falsch geschriebenen Variablennamen schreibe, meldet SQL * Plus die Zeilen- und Spaltennummer des Fehlers zusätzlich zur Fehlermeldung. Viele APIs hingegen melden standardmäßig nur den PLS-00201-Fehler.
%Vor%Wenn Sie eine SQL-Anweisung mit einem ungültigen Variablennamen ausführen, ruft SQL * Plus die Spalten- und Zeilenposition ab und setzt ein * unter das fehlerhafte Zeichen, d. h.
%Vor%Die meisten PL / SQL-IDEs (TOAD, SQL Developer usw.) werden etwas Ähnliches tun, indem sie die entsprechenden OCI-APIs unter den Abdeckungen abfragen. Wie dies gemacht wird, hängt jedoch von der API ab.