目的
この制御によって、ユーザーは、非フィールド モード応答に対してその後に発行されるSQLリクエストに関連付けられている10進数に使用される精度を指定できます。この値によって、CLIシステム パラメータ ブロック(SPB)でmax_decimal_returnedに指定されている精度がオーバーライドされます。
SHOW CONTROLSコマンドは、現在のDECIMALDIGITS設定を判断するのに使用できます。
max_decimal_returnedエントリが設定されている場合、設定の初期値はSPBエントリの値に基づいて決まります。
構文
次のような場合に当てはまります。
- n
- nの値は、0~255で両端の値を含みます。DEFAULTを使用すれば、設定を初期値にリセットする必要があることを示すことができます。
0値を使用する、またはまったく値を指定しないのは、DEFAULTと同じになります。
0以外の整数値には、データベース サーバーによる検証が実行されます。
- DEFAULT
- DEFAULTを使用すれば、設定を初期値にリセットする必要があることを示すことができます。
使用上の注意
DECIMALDIGITSコマンドは、セッション確立前に使用できます。 現在のDECIMALDIGITS設定は、使用しているデータベースのバージョンがMax Decimal Precisionをサポートしてしません場合は使用しません。
現在のDECIMALDIGITS値は、明示的に変更されるまでそれ以降のすべてのリクエストに対して有効です。また、一度のBTEQの起動中に実行される複数のLOGON間で持続します。
返される10進数の最大桁数は、すべてのレコード モードに適用されますが(レコード、標識モード、マルチパート標識)、フィールド モードには適用しません。 フィールド モードの場合、CASTを実行するか、またはFORMAT句を使用する必要があります。
フィールド モードとレコード モードまたは標識モードでは動作が異なります。フィールド モードはフォーマットされたデータを処理するためのものです。フィールド モードではFORMATまたはCASTを簡単に使うことができます。 レコード モードまたは標識モードの場合、データは内部的に表わされます。例えば、互換性が重要な、メインフレームに返すDECIMALデータのパック10進数などがあります。
SET DECIMALDIGITSnの標識モードでの動作は、明示的CASTと同じです。 切り捨てと丸めの詳細については、<SQL関数、演算子、式および述部、B035-1145>を参照してください。
DECIMALDIGITS設定はフィールド モードの動作には何の影響もありません。 .SET DECIMALDIGITSnについて、フィールド モードの場合でも標識モードと同じ効果が得られるようにするためには、DECIMAL(n,n)へのCASTを実行するか、桁数をnで指定したFORMAT句を実行します。
例 – DECIMALDIGITS
DECIMAL(28,28)へのCAST:
.logon dbs5/dbc,dbc select * from dbc.dbcinfo; select cast(0.000000000100000000020000000003 as DECIMAL(28,28)); .logoff