sql >> データベース >  >> RDS >> Oracle

Oracle PL/SQL カーソル内にテーブルを作成していますか?

    通常、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 操作は暗黙的なコミットを実行するため、手順が単一のアトミック トランザクションではないことに注意する必要があります。




    1. XSSとSQLインジェクションを除いて自分のサイトを保護する方法は?

    2. 配列mysqlクエリのチェックボックス値がチェックされたときにPHPフォームがチェックされましたか?

    3. SQL Server - 0 に遭遇するとリセットされる累積合計

    4. 最新バージョンのMariaDBサーバーを使用した最新のJiraへのアップグレード