0

Oracle 11g と Oracle SQL Developer 3.2.20.09 を使用しています。手順を作成しています。

PL/SQL: ORA-00942: table or view does not exist次のようにクエリを書くとエラーが発生するのはなぜですか。

select * from TableExample;

しかし、次のようにクエリを書くと:

select * from "TableExample";

それはうまくいきますか?

エラーなしで最初のオプションを使用する方法はありますか? tableは、上記のクエリを実行している同じユーザーを使用して作成されたことに注意してください。

編集:主キーを除いて、すべてのフィールドにアポストロフィを使用する必要があることにも気付きましたID

4

3 に答える 3

2

その理由は、テーブルが二重引用符で囲まれたテーブル名で作成されたためです。通常、テーブル名と列名では大文字と小文字が区別されませんが、二重引用符で囲むと、完全に大文字でない限り大文字と小文字が区別されます(非常識ですが、true :-()。

正しいテーブル名と列名を見つけるには、データディクショナリにクエリを実行します。

select * from dba_tab_cols where upper(table_name) = upper('TableExample')

(必要な権限がない場合は、dba_tab_colsの代わりにuser_tab_colsを使用してください)。このクエリによって返されるテーブル名と列名ごとに、大文字またはアンダースコア以外のものが含まれている場合は、引用符で囲む必要があります。

于 2012-12-05T12:03:21.273 に答える
1

「テーブル」は予約語であるため、オラクルは次のような構文エラーとして認識します。

select * from from ; 

二重引用符でエスケープできますが、このテーブルをクエリするたびに二重引用符を使用することを忘れないでください。

于 2012-12-05T11:48:33.223 に答える
1

テーブルの作成方法によって異なります。テーブルが "TableExample" (引用符付き) としても作成された場合、テーブル名は大文字と小文字が区別されるため、テーブルを選択するときに引用符を使用する必要があります。

于 2012-12-05T11:57:58.850 に答える