ORA-00904 無効な識別子です。の解決方法
ORA-00904 ORA-00904は、文の中で一致しない列名または誤った構文を使用したことを意味します。通常、エラーはSELECTまたはINSERTで発生し、その他はUPDATE、DELETE、CREATE TABLE、ALTER TABLE、またはPL/SQLブロックで発生している可能性があります。 ほとんどのユーザーはそのエラーを信じていませんが、実際にSQLパーサーは間違いを犯したことが一度もないので、この記事でエラーパターンを見てみるのが好きかもしれません。おそらく、エラーパターンの1つがあなたのケースにマッチします。ほとんどのエラーは大文字と小文字を区別する問題なので、最初に緩い形式と厳密な形式の違いを説明する必要があります。 通常、Oracleは、パスワード以外の大部分の識別子を大/小文字を区別しないものとして扱います。 ただし、ORA-00904無効な識別子が生成された場合に注意が必要な特別な使用法がいくつかあります。 ORA-00904だけでなく、ORA-00903およびORA-00911も、オブジェクト識別子の無効な使用法に関連しています。 具体的には、ORA-00903は無効なテーブル名をユーザーに警告し、不正な文字を配置するためにORA-00911が発生します。 緩い形式と厳密な形式 Oracle Databaseのオブジェクト名と修飾子によると、データベース・オブジェクトを作成するための有効な命名形式は2種類あります。1つは引用符で囲まれていない識別子、もう1つは引用符で囲まれた識別子です。ORA-00904を回避するには、2つの命名形式の明確な違いを知っておく必要があります。 引用符で囲まれていない識別子(緩い形式) 句読点やその他の特別な扱いに囲まれていません。基本的に同等の文字列である限り、SQLステートメントでは大文字と小文字を区別せずに柔軟に使用できます。だから私は通常この記事でそれを緩い形式と呼びます。 引用符付き識別子(厳密な形式) それらは二重引用符( "")で始まり、終わります。空白や予約語を含め、ほとんどすべての文字を二重引用符で囲むことができます。この種の識別子は、最初に定義されたとおりに使用する必要があります。だから私は通常、この記事ではそれを厳密な形式と呼びます。私の知る限りでは、これがORA-00904の主な原因です。 後ほど、ORA-00904無効な識別子についても詳しく説明します。 ORA-00904のエラー・パターン ほとんどの場合、列名の誤用がORA-00904の主な原因であり、残りは構文エラーです。この記事では、次の項でORA-00904のいくつかのエラー・パターンについて説明します。 SELECT, INSERTのORA-00904 WHERE, ORDER BY,… Read More »ORA-00904 無効な識別子です。の解決方法