通常、PL/SQL プロシージャ内で DDL (作成、変更、削除) を実行することはありません。一時データを格納するテーブルが必要な場合は、一時テーブル この目的のために。あなたの場合、最初にテーブルを作成します
CREATE GLOBAL TEMPORARY TABLE T1 ( col1 VARCHAR2(128), col2 VARCHAR2(128), col3 NUMBER(3) NOT NULL, col3 FLOAT(100) );CREATE GLOBAL TEMPORARY TABLE T2 ASSELECT * FROM other_table WHERE 1 =0;コード> プレ>
そして、手順は次のようになります
DECLARECURSOR CUR IS ...BEGIN FOR rec IN CUR LOOP -- ここで処理を行う END LOOP;DELETE FROM T1;DELETE FROM T2;END;/
プレ>
もちろん、その後テーブルが削除されることはありませんが、PL/SQL プロシージャを 1 回だけでなく、定期的に使用する必要があると思いますよね?
それでもプロシージャで DDL を実行する場合は、動的 SQL
(すぐに実行)。ただし、DDL 操作は暗黙的なコミットを実行するため、手順が単一のアトミック トランザクションではないことに注意する必要があります。