7
いくつかの問合せを動的に生成する必要があるPL/SQLプロシージャを作成しています。その1つは、パラメータとして取られた問合せの結果を使用して一時表を作成することです。EXECUTE IMMEDIATEを指定してこのクエリを実行すると、そのクエリが失敗するのはなぜですか?
CREATE OR REPLACE PROCEDURE sqlout(query IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ');';
END;
それは正しくコンパイル、それでもなどのように非常に単純なクエリで:
BEGIN
sqlout('SELECT * FROM DUAL');
END;
ITはORA-00911: invalid character
をスローします。作成したクエリを手動で実行すると、正しく実行されます。この時点で、問題の原因を特定することができます。
私はprocは、アプリケーションによってイベントの通常の過程で実行されていないことを願って...ダイナミックDDL(例えば、新しい環境をセットアップ)管理スクリプトのだけは本当に適切です。 –