目的
この制御によって、ユーザーは、データを返すSQLリクエストに応じてデータベースからデータ行を返すためにレコード モードを使用するかどうかを指定できます。返される各行にはメタデータのない生データが含まれていて、そのデータはデータベースによって返されたものと同じ表現で、クライアント システムに適したバイト オーダーで表示されます。エクスポートがアクティブではない場合、BTEQは、選択された各行を16進数の値を使用して表わされるダンプ レコードとして提示します。
構文
次のような場合に当てはまります。
- OFF
- フィールド モードであることを示す(システムのデフォルト値)。
- ON
- レコード モードであることを示す(コマンドのデフォルト値)。
使用上の注意
RECORDMODE設定は、デフォルトではOFFです。ONまたはOFFを指定せずにコマンドを使用すると、BTEQはRECORDMODEをONに設定します。SHOW CONTROLS RECORDMODEコマンドを使用して、現在の設定状態を確認できます。
.EXPORT DATAが指定された場合、レコード モードが自動的に設定されます。BTEQは、.EXPORT REPORTまたは.EXPORT RESETが使用されたとき、または、INDICATORMODE設定またはRECORDMODE設定をOFFに設定したときに、フィールド モードを使用するデフォルトの動作に自動的に戻ります。フィールド モードでは、データベースはすべてのデータ値を文字表現で返し、BTEQは表形式のレポートを使用して返された行を示します。
RECORDLENGTHコマンドの設定は、RECORDMODE設定がONのときにstdoutに表示される16進ダンプに影響します。RECORDLENGTH=MAX64の場合、16進数のダンプには4桁のオフセットが含まれます。RECORDLENGTH=MAX1MBの場合、BTEQは大きなレコードを処理するために8桁のオフセットを使用します。
ECHO文をTeradata SQLマクロ内で使用して、BTEQでRECORDMODEコマンドが発行されるようにできます。
行の終わり文字の相違
BTEQレポート内の行の終わりを示す文字列は、UNIXシステムとWindowsシステムとの間で差異があります。
オペレーティング システム | 行の終わりインディケータ |
---|---|
UNIX OS | \n |
Windows | \r\n |
この文字は、各オペレーティング システムの標準の行の終わり文字です。 アプリケーションを、上に示した両方の環境で実行する場合は、その前に、それぞれの環境に合うようにアプリケーションを変更する必要があります。
レポートの数値の桁あふれ
フィールド モードでは、データ型が数値または10進数のレポート内のデータに関して返される数値のあふれは、'Error....'の代わりに'***'として報告されます。
例えば、次の問合わせでは、返される桁数が指定した形式に収まるので、正しい形式で返されます。
SELECT cast (123456 as integer format '$999,999');
結果は、次のようになります。
123456 $123,456
次の問合わせでは、数値のあふれが星印('***...')として報告されます。
SELECT CAST (123456 as integer format '$99,999');
結果は、次のようになります。
123456 *******
同じ問合わせをレコードまたは標識モードで実行した場合は、数値のあふれがエラーとして報告されます。
例1 – RECORDMODE
次に示すように、RECORDMODEコマンドを使用すると、データがホスト指向(レコード モード)の表現形式で返されます。
database workforce; .set defaults .set recordmode on select deptno ,deptname from department order by deptno ; .defaults .set recordmode off .logoff .exit
BTEQの応答
*** Success, Stmt# 1 ActivityCount = 5 *** Query completed. 5 rows found. 2 columns returned. *** Record#1. Dump Of Data: 00000000 0064 000E C184 9489 9589 A2A3 9981 A389 *....Administrati* 00000010 9695 *on* *** Record#2. Dump Of Data: 00000000 012C 000B C5A7 8583 40D6 8686 8983 85 *....Exec Office* *** Record#3. Dump Of Data: 00000000 01F4 000B C595 8789 9585 8599 8995 87 *.4..Engineering* *** Record#4. Dump Of Data: 00000000 0258 000D D481 95A4 8681 83A3 A499 8995 *....Manufacturin* 00000010 87 *g* *** Record#5. Dump Of Data: 00000000 02BC 0009 D481 9992 85A3 8995 87 *....Marketing*
例2 – マクロによって出力されるRECORDMODE
Teradata SQLマクロでは、使用例1のコマンドは次のようになります。
ECHO '.SET RECORDMODE ON';
RECORDMODEコマンドのオプションをONにした後にフィールド モードでデータが返されるようにするためには、次のようにもう一度RECORDMODEコマンドを指定します。
.SET RECORDMODE OFF