ORA-00900 無効なSQLステートメントは一般的なエラーの1つです
これは、このエラーについてOracleのドキュメントに記載されている内容です
参照:Oracleドキュメント
ORA-00900の無効なSQLステートメントを解決するためのチェックリスト
(1)このエラーは、Oracleプロシージャを作成しようとしていて、ProceduralOptionがインストールされていない場合によく発生します。 Procedural Optionがインストールされているかどうかを確認するには、SQL*Plusを使用してOracleセッションを開きます。 PL / SQLバナーが表示されない場合は、ProceduralOptionがインストールされていないことがわかります。
(2)データベースリンクを使用しようとしているときにORA-00900が発生する可能性があります。多くのユーザーは、2000より前に機能していた可能性のあるフィールドをクエリしようとすると、ORA-00900に遭遇していることに気付きます。ローカルデータベースでORA-00900を解決するには、init.oraパラメータNLS_DATE_FORMATを変更してから、(代わりに二重引用符を使用してください)シングル)値の周り
alter session set NLS_DATE_FORMAT = "DD-MON-YYYY";
(3)SQL Developer/JDBC接続でexecuteステートメントを使用する
execute dbms_utility.analyze_schema('OKX','ESTIMATE',30); ORA-00900: invalid SQL statement
executeはsqlplusオプションです。アプリケーション/他の言語プログラムでは、以下のオプションのいずれかを使用する必要があります
begin execute dbms_utility.analyze_schema('OKX','ESTIMATE',30); end; or begin execute dbms_utility.analyze_schema('OKX','ESTIMATE',30) end; /
(4)多くの場合、開発者はplsqlブロックで間違いを犯し、
のようなステートメントを記述します。v_dynsql:='dbms_utility.analyze_schema('OKX','ESTIMATE',30)'; execute immediate v_dynsql;
上記のコードは、ORA-00900をdbms_utility.analyze_schema(‘OKX’、’ESTIMATE’、30);として提供します。
有効なステートメントではありません
修正は、以下に示すように開始と終了を使用することです
v_dynsql:= q'[BEGIN dbms_utility.analyze_schema('OKX','ESTIMATE',30); END;]'; execute immediate v_dynsql;
(5)PLSQLで表を記述したい場合
SQL> begin execute immediate 'describe FND_USER'; 2 end; 3 / begin execute immediate 'describe FND_USER'; * ERROR at line 1: ORA-00900: invalid SQL statement ORA-06512: at line 1
ここではdescを使用できません。クエリに基づいて選択することもできます
begin execute immediate q'[select COLUMN_NAME,DATA_TYPE from all_tab_columns where table_name = 'FND_USER' order by column_id]'; end; /
(6)ビューステートメントの作成に関する計画を説明しようとしている場合
SQL> explain plan for create view test as select * from dual; explain plan for create view test as select * from dual * ERROR at line 1: ORA-00900: invalid SQL statement
ORAエラーを修正するさまざまな方法が気に入っていただければ幸いです。フィードバックをお寄せください
関連記事
ORA-00911:無効な文字
ORA-29913:ODCIEXTTABLEOPENコールアウトの実行中にエラーが発生しました
ORA-27154:起動中にpost/wait作成に失敗しました
ORA-01111
ORA -00257:アーカイバエラー、解放されるまで内部接続のみ
ora-29283:無効なファイル操作