web-dev-qa-db-de.com

Wie kann ich den ORA-00911 lösen: ungültiger Zeichenfehler?

Ich habe versucht, eine SQLINSERT mit Toad for Oracle auszuführen:

INSERT INTO GRAT_ACTIVITY
   (UUID, IP_ADRESS, SEND_MAIL, DATE_CREA, DATE_UPD, CREATOR, CENTER, ETAT, REQUEST)
 VALUES('555-vgd9-pllkd-5513', '172.12.23.130', 'N', SYSDATE, SYSDATE, '1554', 'M18', 'I', 8842);
--COMMIT;

die GRAT_ACTIVITY-Tabellenstruktur sieht wie folgt aus:

CREATE TABLE CASH.GRAT_ACTIVITY
(
  UUID       VARCHAR2(64 BYTE) NOT NULL,
  IP_ADRESS  VARCHAR2(15 BYTE),
  SEND_MAIL  VARCHAR2(1 BYTE),
  DATE_CREA  DATE,
  DATE_UPD   DATE,
  CREATOR    VARCHAR2(4 BYTE),
  CENTER     VARCHAR2(4 BYTE),
  ETAT       VARCHAR2(1 BYTE),
  REQUEST    NUMBER
)

die Fehlermeldung:

ORA-00911: ungültiges Zeichen

Ursache: Bezeichner dürfen nicht mit anderen Zeichen ASCII als Buchstaben und Zahlen beginnen. $ # _ sind auch nach dem ersten .__ zulässig. Charakter. Bezeichner, die in doppelte Anführungszeichen eingeschlossen sind, können ein beliebiges .__ enthalten. Zeichen außer einer Doppelquote. Alternative Anführungszeichen (q '# ... #') Leerzeichen, Tabulatoren oder Zeilenumbrüche dürfen nicht als Trennzeichen verwendet werden. Für alle Weitere Kontexte finden Sie im SQL-Referenzhandbuch.

Maßnahme: Keine

Wie kann ich es lösen?

15
CHHIBI AMOR

Die Anweisung, die Sie ausführen, ist gültig. Der Fehler scheint zu bedeuten, dass Toad das abschließende Semikolon als Teil des Befehls einschließt, was zu einem ORA-00911 führt, wenn es als Teil einer Anweisung enthalten ist - da es ein Anweisungstrennzeichen im Client ist und nicht Teil der Anweisung selbst.

Es kann die folgende auskommentierte Zeile sein, die Toad verwirrt ( wie hier beschrieben ); oder weil Sie versuchen, alles als einzelne Anweisung auszuführen. In diesem Fall können Sie versuchen, den Befehl run script (F9) statt run-Anweisung (F5).

Wenn Sie nur die auskommentierte Zeile entfernen, verschwindet das Problem. Wenn Sie dies jedoch auch mit einem tatsächlichen Commit sehen, ist es wahrscheinlich, dass Sie die falsche Methode zum Ausführen der Anweisungen verwenden.

Es gibt ein bisschen mehr Informationen darüber, wie Toad die Semikolons in einem Kommentar analysiert zu dieser verwandten Frage , aber ich kenne Toad nicht genug, um genauer darauf einzugehen.

39
Alex Poole

Ich hatte das gleiche Problem und es lag am Ende der Zeile. Ich hatte aus einem anderen Dokument kopiert ... Ich legte alles auf dieselbe Zeile, spaltete sie dann wieder auf und es funktionierte.

1
azzurroverde

Ich habe in letzter Zeit das Gleiche gesehen. Beim Kopieren eines Skripts aus einem Dokument in den SQL-Entwickler waren dies nur Leerzeichen. Ich musste die Leerzeichen entfernen und das Skript lief.

1
Norbert Wupona

Entfernen Sie das Semikolon (;), das Backtick (``) usw. aus einer Abfrage

1
Bablu Ahmed

Ich verwende ein Fremdanbieterprogramm, das Oracle SQL ausführt, und dieser Fehler ist aufgetreten. Vor einer SELECT-Anweisung hatte ich einige kommentierte Anmerkungen, die Sonderzeichen enthielten. Durch das Entfernen der Kommentare wurde das Problem behoben.

1
root

Wenn ein anderes Zeichen als $, _ und # im Namen einer Spalte oder Tabelle verwendet wird, muss der Name in doppelte Anführungszeichen gesetzt werden . Link

0
erakm