なぜそれが失敗する可能性がIMMEDIATE EXECUTEでこのクエリを実行しているのでしょうか?

StackOverflow https://stackoverflow.com/questions/885304

質問

私は、パラメータとして取らクエリからの結果を使用して一時テーブルを作成するもの一つは、動的にいくつかのクエリを生成する必要がある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 || ')';
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top