なぜそれが失敗する可能性がIMMEDIATE EXECUTEでこのクエリを実行しているのでしょうか?
-
23-08-2019 - |
質問
私は、パラメータとして取らクエリからの結果を使用して一時テーブルを作成するもの一つは、動的にいくつかのクエリを生成する必要があるPL / SQLプロシージャを書いています。
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
をスローします。私は手動で作成したクエリを実行すると、正しく動作します。この時点で、私は、問題の原因を特定することができています。
解決
失うようにしてください「;」文字列の中から、あなたは即時に実行していること。
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ')';
所属していません StackOverflow