Oracle 11G では、INSERT SELECT ステートメントにより、サブクエリを使用してあるテーブルから別のテーブルに効率的にデータを転送できます。ただし、構文が正しくないと、ユーザーに予期しないエラーが発生する可能性があります。
ユーザー クエリ:
ユーザーが、次のコマンドを使用してサブクエリの結果を新しいテーブルに挿入しようとしました。次のステートメント:
insert into table1 (col1, col2) values (select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2);
しかし、ユーザーは次のことに遭遇しました。エラー:
SQL Error: ORA-00936: missing expression
解決策:
指定された構文が正しくありません。 Oracle の INSERT SELECT ステートメントには、他の SQL 言語で一般的に使用される VALUES キーワードは必要ありません。正しい構文は次のとおりです。
insert into table1 (col1, col2) select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2
つまり、ステートメントの先頭から VALUES キーワードを削除するだけです。これにより、Oracle は INSERT SELECT クエリを正しく実行し、サブクエリの結果を table1 に挿入できるようになります。
以上がOracle 11g で INSERT SELECT を正しく使用して ORA-00936 を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。