0
create or replace procedure sample
as
ID VARCHAR(20);
BEGIN
execute immediate
'CREATE GLOBAL TEMPORARY TABLE UPDATE_COLUMN_NO_TP
(
NAME VARCHAR2(256)
)';

INSERT INTO UPDATE_COLUMN_NO_TP
SELECT SRC_PK_COLUMNS.PK_KEY 
  FROM SRC_PK_COLUMNS 
  WHERE NOT EXISTS ( 
  SELECT 1
  FROM TGT_PK_COLUMNS
 WHERE TGT_PK_COLUMNS.ID = SRC_PK_COLUMNS.ID);
END;

エラーは次のとおりです。

The table is no exist. 

したがって、このシナリオに最適なソリューションが必要です。私のストアド プロシージャには、10 個の一時テーブルがあります。すべてが動的な作成と挿入です。

4

1 に答える 1

1

UPDATE_COLUMN_NO_TPコンパイル時にテーブルが存在しないため、エラーが発生しました。
テーブルを動的に作成した場合は、動的にアクセスする必要があります。
そして、GTT の本質についての Mat のコメントにも注目してください。


execute immediate '
INSERT INTO UPDATE_COLUMN_NO_TP
SELECT SRC_PK_COLUMNS.PK_KEY 
  FROM SRC_PK_COLUMNS 
  WHERE NOT EXISTS ( 
    SELECT 1
    FROM TGT_PK_COLUMNS
    WHERE TGT_PK_COLUMNS.ID = SRC_PK_COLUMNS.ID
  )
';
于 2013-03-27T09:41:50.787 に答える