BTEQの入力は、1つ以上のステップを含む命令で構成されます。 これらのステップはBTEQコマンド、または単一のSQLリクエストです。 各コマンドの前にピリオド'.'を配置する必要があります。そうしないと、BTEQはコマンドをSQLリクエストであると想定して、Teradata Databaseにコマンドを送信します。
例えば、次の命令のうちの最初の3つにはBTEQコマンド ステップが含まれています。3番目の命令にはコマンド ステップが2つ含まれています。4番目の命令は単一のSQLリクエスト ステップで構成されています。
.HELP BTEQ .LOGON mydbs/myid; .SET SIDETITLES ON; .SET FOLDLINE ON ALL SELECT DATE;
コマンドとSQLリクエストが混在している命令を作成することはできません。 また、命令内の唯一のステップや最後のステップとして使用しなければならないコマンドがあります。 例えば、マルチステップ命令内では、LOGONおよびOSコマンドは最後のステップとしてのみ指定することができます。
すべてのステップの末尾にセミコロンを使用する必要があります。 最後のコマンド ステップでは末尾のセミコロンを省略できますが、SQLリクエストの場合は一般に必要となります。 ただし、スクリプトの最後の命令としてバッチ モードで実行依頼されるSQLリクエストの場合は、例外的にセミコロンが省略されます。
それぞれのSQLリクエスト ステップは1つ以上のSQL文で構成され、各ステートメントの末尾を示すセミコロンが付加されています。例えば、1つの複文SQLリクエストで構成された命令を次に示します。
SELECT DATE; SELECT TIME;
BTEQがSQLリクエストのインストラクションを特定する方法についての詳細は、Teradata SQLリクエストを参照してください。
BTEQへのコマンドの入力は、SQL ECHO文を直接使用して指定するか、実行されるSQLマクロに含めて指定することができます。例えば、次のようになります。
ECHO '.HELP BTEQ';
1つの命令に複数のコマンドを配置すると便利です。
- BTEQコマンドのエコーに必要な移動回数が少なくなる。 使用ケースによっては、パフォーマンスが大幅に上がることがある。
- バッチ モードで作成されるブロック数が減るため、stdout/SYSPRINTファイルのサイズが小さくなり、 結果も確認しやすくなる。例えば、次の2つの単一コマンド命令について考えてみます。
.RTITLE 'mytext' .SHOW CONTROLS RTITLE
バッチ モードでは、以下のように2つの結果ブロックが生成されます。命令ごとに1つのブロックが生成され、それぞれがプラス文字とマイナス文字で構成される開始線と終了線で区切られます。これらの分離線の長さはBTEQの幅設定によって決定されます。
+---------+---------+---------+---------+---------+---------+---------+---- .RTITLE 'mytext' +---------+---------+---------+---------+---------+---------+---------+---- .SHOW CONTROLS RTITLE [SET] RTITLE = &DATE ||mytext|| Page&PAGE +---------+---------+---------+---------+---------+---------+---------+----
ただし、2つのコマンドが1つの命令として送信されると、生成される結果ブロックは、次のように1つだけになります。
+---------+---------+---------+---------+---------+---------+---------+---- .RTITLE 'mytext'; .SHOW CONTROLS RTITLE [SET] RTITLE = &DATE ||mytext|| Page&PAGE +---------+---------+---------+---------+---------+---------+---------+----