0

私はOracle Sqlを初めて使用し、問題に直面しています:

procedure 内に一時テーブルを作成したい。

お気に入り:

CREATE PROCEDURE P
  AS
  BEGIN
    CREATE TEMPORARY TABLE A(ID int);
  END P;

しかし、これは私にエラーを与えています

プロシージャ内に一時テーブルを作成するにはどうすればよいですか。

stackoverflow で他の回答を見たことがありますが、それは私の質問に適切に回答していません。

4

3 に答える 3

4

EXECUTE IMMEDIATEで動的 SQL を使用できます。

CREATE OR REPLACE
PROCEDURE p
AS
BEGIN
   EXECUTE IMMEDIATE 'CREATE TEMPORARY TABLE A(id NUMBER)...etc';
END p;

編集: 明らかに、EXECUTE IMMEDIATE ステートメント内で構文が正しいことを確認する必要があります。

それが役に立てば幸い。

于 2013-09-19T18:30:55.913 に答える
1

プロシージャを次のように宣言する必要があります。

create or replace PROCEDURE MYPROCEDURE AUTHID CURRENT_USER IS

script varchar(4000);

BEGIN

script:= 'CREATE GLOBAL TEMPORARY TABLE BNMCODIAGNOSTICASSOCIE_TEMP
ON COMMIT PRESERVE ROWS
as select ........';

EXECUTE IMMEDIATE script;

commit;

END;
于 2014-02-07T10:30:44.107 に答える