17.05 - 例: マクロでの削除 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)

次のマクロでは、SELECT文とDELETE文が単一の複文リクエストとして構成されています。

     CREATE MACRO res_use
           (from_date (DATE,       DEFAULT DATE),
            to_date   (DATE,       DEFAULT DATE),
            from_time (INTEGER,    DEFAULT 0),
            to_time   (INTEGER,    DEFAULT 999999),
            proc      (VARCHAR(4), DEFAULT 'P'),
            secs      (SMALLINT,   DEFAULT 600) )
        AS (SELECT
             the_date (TITLE 'Resource//TheDate'),
             the_time (TITLE 'Utilized//TheTime'),
             proc,
             AVERAGE(hits) (TITLE 'Avg//Hits'),
             MAXIMUM(cpu)  (TITLE 'Max//CPU'),
             AVERAGE(cpu)  (TITLE 'Avg//CPU'),
             MAXIMUM(disk) (TITLE 'Max//Disk'),
             AVERAGE(disk) (TITLE 'Avg//Disk'),
             MAXIMUM(host) (TITLE 'Max//Host'),
             AVERAGE(host) (TITLE 'Avg//Host'),
             MAXIMUM(chan) (TITLE 'Max//Chan'),
             AVERAGE(chan) (TITLE 'Avg//Chan')
             FROM DBC.res_use_view
             GROUP BY the_date, the_time, proc
             WHERE the_date BETWEEN :from_date AND :to_date
             AND   the_time BETWEEN :from_time AND :to_time
             AND   proc CONTAINS :proc
             AND   secs EQ :secs
             ORDER BY proc, the_date, the_time

           ;DELETE FROM res_use_view ALL;);

Teradataセッション モードでは、先行するマクロが実行されるが、明示的なトランザクションの境界内で実行されるのではない場合に、DELETE文に対して高速パス削除処理が使用されます。無条件高速パス削除処理を参照してください。

ANSIセッション モードでは、マクロにCOMMITが組み込まれている場合、またはリクエスト内でCOMMITがリクエスト行の最後にマクロの実行の直後に指定されている場合に、DELETE文に対して高速パス削除処理が使用されます。

例えば、先行するマクロの最終行は次のようにすることができます。

     DELETE FROM res_use_view ALL ;
     COMMIT;) ;

COMMITが、マクロ自体またはマクロを実行するリクエストに指定されていない場合には、DELETE文に対して低速パス処理が使用されます。