目的
この制御によって、ユーザーは、SQL文への応答として端末に表示される、またはファイルに書き込まれる、行と列の最大数を指定できます。
構文
次のような場合に当てはまります。
- n1
- 端末に表示される、またはファイルに書き込まれる、行の最大数。
限度値n1は、1以上18,446,744,073,709,551,616未満でなければなりません。
限度の設定を無効にするには、n1をアスタリスク(*)またはゼロに設定します。これにより、選択されたすべての行が返されます。
デフォルト値は、0である。
- n2
- 端末に表示される、またはファイルに書き込まれる、列の最大数。 この要素の指定は任意です。n2に値を入力してから、n1に値を入力する必要があります。
n2の値には、アスタリスクまたは1~65535の数値を使用できます。 ただし、2048よりも大きい数値を入力する場合には、DBSにログオンする必要があります。 アスタリスク(*)は、2048の列を戻すことが可能であることを意味します。 この値は、Teradata Databaseの今後のリリースをサポートするために変更される可能性があります。 表示される列数の制限を固定する場合は、アスタリスクの代わりに数値を入力します。
現行のTeradata Databaseの制限事項については、<SQL基礎、B035-1141>の付録Cを参照してください。
デフォルト値は100である。
使用上の注意
Teradata Databaseは、SQL文の完全な結果セットを構成するすべての行を常に返します。 BTEQのデフォルトでは、最大100列を使用して結果が生成されます。 結果の取得に100を超える列が必要な場合は、 RETLIMITコマンドを使用して、保持される列数の制限を拡大します。
RETLIMITコマンドは、Teradata SQLの文単位に適用されます。Teradata SQLのリクエスト単位ではありません。 したがって、リクエストに複数のTeradata SQL文が含まれている場合には、各文ごとに、指定された行数が出力されます。 設定された限度を超えると、次のメッセージが表示されます。
*** Warning: RetLimit exceeded. Ignoring the rest of the output.
複文リクエストが複数のデータ返却文から構成され、そのうち1つだけを制限しなければならない場合には、RETLIMITコマンドよりもTeradata SQLのTOP演算子を使用した方がよい場合があることに注意してください。 この1つの制約文がTOP演算子を使用します。 行の順序を具体的に決定する場合(例えば、ORDER BY句などによって)、TOPは確実に最初のn行を返します。 選択の順序を決定しない場合、TOPは任意のn行を返します。
RETLIMITコマンドは、Teradata SQLマクロで使用できます。
列数制限を上げる前に、場合によっては、その他の設定を変更し、設定の結果がその他の列でも有効になるようにする必要があります。 例えば、第3列以外のすべての列を省略する場合は、OMIT ON ALLコマンドを使用してから、列制限を変更します。 列制限を変更した後で、OMIT ON 3コマンドを使用します。 このようにしないと、ON属性は、その他の列で有効になりません。
例1 – RETLIMIT
選択できる列の最大数のデータベース制限は、変更されることがあります。 この制限の変更が重要ではなく、結果出力に使用する行と列の最大数を指定する場合は、次のように入力します。
.SET RETLIMIT * *;
例2 – RETLIMIT
次の例では、データベース制限が変更されるかどうかに関係なく、列の維持制限を同一に残す必要がある場合、結果出力に使用する必要がある行と列の最大数を指定します。
.SET RETLIMIT * 2048;
例3 – RETLIMIT
SQL SELECT文の出力を3つ示します。最初はRETLIMITコマンドがない場合(Retlimit Offのヘッダー)で、次にRETLIMITの値を1(Retlimit 1のヘッダー)と4(Retlimit 4のヘッダー)に設定して2回繰り返しています。
database workforce; .defaults .format on .heading 'Retlimit off' select name ,deptno from employee order by deptno; .defaults .format on .heading "Set Retlimit 1" .set retlimit 1 =1 .defaults .format on .heading "Set Retlimit 4" .set retlimit 4 =1 .format off .quit
BTEQの応答
*** Query completed. 21 rows found. 2 columns returned. Retlimit off Name DeptNo ------------ ------ Peterson J 100 Chin M 100 Greene W 100 Moffit H 100 Russell S 300 Leidner P 300 Phan A 300 Inglis C 500 Carter J 500 Watson L 500 Smith T 500 Omura H 500 Reed C 500 . . (etc) *** Query completed. 21 rows found. 2 columns returned. Set Retlimit 1 Name DeptNo ------------ ------ Peterson J 100 *** Warning: RetLimit exceeded. Ignoring the rest of the output. *** Query completed. 21 rows found. 2 columns returned. Set Retlimit 4 Name DeptNo ------------ ------ Peterson J 100 Chin M 100 Greene W 100 Moffit H 100 *** Warning: RetLimit exceeded. Ignoring the rest of the output.
例4 – マクロによって出力されるRETLIMIT
Teradata SQLマクロでは、使用例3のRETLIMITコマンドは次のようになります。
ECHO '.SET RETLIMIT 4';
例5 – RETLIMIT
現在の行の維持制限を無効にするには、次を使用します。
.SET RETLIMIT 0