マクロの実行 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

マクロの実行は、暗黙のトランザクションを構成します。そのため、Teradataセッション モードでは、BEGIN TRANSACTION文とEND TRANSACTION文でマクロを囲む必要はありません。

マクロを実行するセッションがANSIモードの場合には、マクロ本体がCOMMIT文で終了しない限り、以降の文でコミットまたはロールバックが発生するまでマクロの動作はコミットされません。COMMIT文を使用してマクロを定義した場合には、そのマクロはANSIモードで実行するセッションでのみ実行されます。

以下の表は、ANSIとTeradataの両方のセッション モードでコミットできるように、マクロを定義して使用する方法を示しています。

マクロを実行するセッション モード 結果
ANSIモードのみ その定義の最後にCOMMIT WORK文を追加します。
ANSIモードとTeradataモードの両方 定義にはCOMMIT WORK文を含めないようにします。

このマクロをANSIセッション モードで実行する場合は、明示的にCOMMIT WORK文を指定するようにユーザーに通知してください。

すべてのリクエストが正常に完了するまで、マクロ本体に含まれる個別の文に対する応答をユーザーが受け取ることはありません。マクロのトランザクションが終了するまで、または文の誤りによってマクロが終了されるまで、リクエストによって参照されるオブジェクトにはロックが設定されます。

マクロにデータ定義文を含める場合は、その他のリクエストを含められません。マクロ内のデータ定義文はマクロが実行されるまで完全には解釈されません。修飾されていないオブジェクト参照の解釈には、実行の時点でそのEXECUTE文を実行したユーザーのデフォルトのデータベースが使用されます。そのため、マクロのデータ定義文のオブジェクトの参照は、そのマクロの中で修飾しておくことを勧めます。