目的
直前のTeradata SQLリクエストを指定された回数だけ繰り返し実行させます。
構文
次のような場合に当てはまります。
- n
- 直前のTeradata SQLリクエストを繰り返す回数
有効範囲は0~2147483647です。デフォルト値は1です。nが0の場合(またはコマンドで指定されていない場合)は、BTEQはREPEAT係数を1に設定します。
使用上の注意
=コマンドは、直前のTeradata SQLリクエストを繰り返し実行させるために使用されます。 これにより、リクエストを指定して、その実行結果を見てから、書式設定用のオプションを変更して、そのリクエストを再び入力することなく実行させることができます。
このコマンドではrequestそのものの定義が重要です。 例えば、次の例では、ET文が直前のリクエスト全体とみなされるために、ET(END TRANSACTION)文のみがさらに10回実行されることなります。
BT; select ... ; select ... ; select ... ; ET; = 10
このリクエストの処理時に、BTEQはステートメントではなくETのみを送信するため、DBSはETリクエストに失敗します。 DBSは、9個のET文を無効にし、BTEQに対して以下のメッセージを発行します。このメッセージは、ユーザーに対して表示されます。
"Failure 3510 Too many END TRANSACTION statements."
トランザクション全体をさらに10回実行させるには、次のようにセミコロンを入れます。
BT ;select ... ;select ... ;select ... ;ET; = 10
この場合には、セミコロンの位置によって、トランザクション内のすべてのステートメントが1つの複文リクエストとみなされます。
=とREPEATとの違い
- REPEATは、反復させるリクエストのbeforeに入力します。=は、リクエストのafterに入力します。
- REPEATでは、followingのリクエストをtotal何回実行させるかを指定します。 =では、lastリクエストをmore何回実行させるかを指定します。
- REPEATコマンドではインポート ファイルの終わりに達するまでリクエストを繰り返し実行させることができます。
= ではできません。
=コマンドとCOMPILEコマンドの使用
=コマンドをCOMPILEコマンドの後に使用すると、=コマンドは、nの値に関係なく、COMPILEリクエストを1回繰り返します。
=コマンドの適用
=コマンドは、直前のTeradata SQLリクエストの後に1つ以上のBTEQコマンドがあっても、直前のTeradata SQLリクエストに戻って適用されます。 このコマンドは、データベースの内容に影響を与えないSELECT文に使用するのが最も適しています。 データベースの内容に影響を与えるステートメントの実行に=コマンドを使用する場合には、注意が必要です。
=コマンドは、Teradata SQLマクロでは使用できません。
例1 – =
以下の例では、最初は選択された情報がデフォルトの形式で出力されます。次に=を使用して、SIDETITLESコマンドのオプションをONに設定してからそのリクエストを1回繰り返し、FORMATコマンドのオプションをONに設定してからそのリクエストを2回繰り返しています。
database Workforce; .defaults .format on select Name DeptNo from Employee order by Name ; .defaults .format on .heading '= 1' .sidetitles on = 1 .defaults .format on .heading '= 2' = 2 .logoff .exit
BTEQの応答
... Page 1
Name DeptNo
------------ ------
Aguilar J 600
Brangle B 700
Carter J 500
Chin M 100
Clements D 700
Greene W 100
Inglis C 500
Kemper R 600
Leidner P 300
Marston A 500
Moffit H 100
.
.
(etc)
Name Aguilar J
DeptNo 600
Name Brangle B
DeptNo 700
Name Carter J
DeptNo 500
Name Chin M
DeptNo 100
Name Clements D
DeptNo 700
Name Greene W
DeptNo 100
.
.
.
(etc)
Name DeptNo
------------ ------
Aguilar J 600
Brangle B 700
Carter J 500
Chin M 100
Clements D 700
Greene W 100
Inglis C 500
Kemper R 600
Leidner P 300
Marston A 500
.
.
.
(etc)
例2 – =
直前のTeradata SQLリクエストを1回だけ繰り返すには、以下を入力します。
=