web-dev-qa-db-ja.com

ORA-00911:無効な文字エラーを解決するにはどうすればよいですか?

Toad for OracleSQLINSERTを実行しようとしました:

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;

GRAT_ACTIVITYテーブル構造は次のとおりです。

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
)

エラーメッセージ:

ORA-00911:文字が無効です

原因:識別子は、文字と数字以外のASCII文字で始まってはいけません。最初の文字の後に$#_も使用できます。二重引用符で囲まれた識別子には、二重引用符以外の文字を含めることができます。代替引用符(q '#...#')では、スペース、タブ、またはキャリッジリターンを区切り文字として使用できません。他のすべてのコンテキストについては、SQL言語リファレンスマニュアルを参照してください。

アクション:なし

どうすれば解決できますか?

21
CHHIBI AMOR

実行しているステートメントは有効です。エラーは、Toadがコマンドの一部として末尾のセミコロンを含むことを意味するようです。これは、ステートメントの一部として含まれるときにORA-00911を引き起こします。これは、ステートメント自体の一部ではなく、クライアントのステートメントセパレーターであるためです。

Toadを混乱させるのは、次のコメントアウトされた行かもしれません( ここで説明されているように );または、すべてを単一のステートメントとして実行しようとしていることが原因である可能性があります。その場合、run scriptコマンド(F9)runステートメントの代わりに(F5)。

コメントアウトされた行を削除するだけで問題はなくなりますが、実際のコミットでこれを見た場合は、間違ったメソッドを使用してステートメントを実行している可能性があります。

Toadがコメント内のセミコロンを解析する方法についてはもう少し情報があります この関連する質問について ですが、Toadについて詳しくは説明していません。

52
Alex Poole

クエリ内からセミコロン(;)、バックティック( ``)などを削除します

8
Bablu Ahmed

私は最近同じものに遭遇しました。スクリプトをドキュメントからsql developerにコピーするときのスペースが原因でした。スペースを削除する必要があり、スクリプトが実行されました。

2
Norbert Wupona

Oracle SQLを実行するサードパーティプログラムを使用していますが、このエラーが発生しました。 SELECTステートメントの前に、特殊文字を含むコメント付きのメモがいくつかありました。コメントを削除することで問題は解決しました。

2
root

私は同じ問題を抱えていましたが、それは行末によるものでした。別のドキュメントからコピーしました。私はすべてを同じ行に置いてから、それらを再び分割しました。

1
azzurroverde

列、テーブルの名前に$、_、および#以外の特殊文字を使用する場合、名前を二重引用符で囲む必要があります。 リンク

1
erakm