11

いくつかのクエリを動的に生成する必要がある PL/SQL プロシージャを作成しています。そのうちの 1 つは、パラメータとして取得されたクエリの結果を使用して一時テーブルを作成することです。

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;

それは投げORA-00911: invalid characterます。作成したクエリを手動で実行すると、正しく実行されます。この時点で、問題の原因を特定できます。

4

1 に答える 1