dec_arithmetic - 10 進数演算モード構成パラメーター

このパラメーターは、10 進数演算モードを指定します。 このモードは、基本的な 10 進数の演算子 (+、-、*、/)、および 10 進数の引数を取る AVG 集約関数と SUM 集約関数の結果の精度と位取りに関する規則に影響します。

構成タイプ
データベース
パラメーター・タイプ
構成可能
デフォルト [範囲]
NULL [DEC.SDEC1515DEC3131D15.SD31.S ただし S は範囲 1 から 9 までの数字]

dec_arithmetic データベース構成パラメーターを使用して、除算を含む 10 進数演算の結果の位取りを変更できます。 SQLSTATE 42911 を防止するために、除算の位取りの最小値を適用できます。

このパラメーターを使用して、 Db2® for z/OS® DECIMAL 算術計算エミュレーションを使用可能にすることもできます。 Db2 for z/OS エミュレーション・モードの影響について詳しくは、 AVG 集約関数、および SUM 集約関数 を参照してください。

ヌル
デフォルトの Db2 規則を DECIMAL 除算の最小位取りなしで指定します。
DEC.S または DEC,S
デフォルトの Db2 規則を DECIMAL 除算の最小位取りで指定します。 S は 1 から 9 の範囲でなければなりません。 デフォルトの 10 進小数点の設定にかかわらず、区切り文字にはピリオドまたはコンマを使用できます。
DEC15 または 15
Db2 for z/OS 互換モード。 Db2 for z/OS DECARTH DECP 値 DEC15 または 15 と同等。 15 桁を超える精度を許可しない規則を指定します。
DEC31 または 31
Db2 for z/OS 互換モード。 Db2 for z/OS DECARTH DECP 値 DEC31 または 31 と同等。
D15.S または D15,S
Db2 for z/OS DEC15 互換モードで、最小 DECIMAL 除算スケールを指定する場合、 S は 1 から 9 の範囲でなければなりません。 デフォルトの 10 進小数点の設定にかかわらず、区切り文字にはピリオドまたはコンマを使用できます。
D31.S または D31,S
Db2 for z/OS DEC31 互換モードで、最小 DECIMAL 除算スケールを指定する場合、 S は 1 から 9 の範囲でなければなりません。 デフォルトの 10 進小数点の設定にかかわらず、区切り文字にはピリオドまたはコンマを使用できます。

dec_arithmetic の値を変更した場合の影響

このデータベース構成パラメーターを変更すると、既存のデータベースで使用するアプリケーションに 変更がもたらされる場合があります。 この動作は、このデータベース 構成パラメーターを変更することによって、10 進数除算の結果の位取りが影響を受ける場合に起きる可能性があります。 以下のリストは、アプリケーションに影響する可能性があるいくつかのシナリオを示しています。 既存のデータベースがあるデータベース・サーバーの dec_arithmetic 構成パラメーターを変更する前に、以下のシナリオについて考慮する必要があります。
  • 静的パッケージの動作は、暗黙的または明示的にパッケージが再バインドされるまでは変わりません。 例えば、値を DEC.3 から DEC.6 に変更した場合、再バインドが行われるまでは、位取りの桁数の追加は結果に反映されない可能性があります。 dec_arithmetic の値を変更したら、その変更の影響を受ける結果を生成するすべての静的 SQL パッケージを再コンパイルして、再バインド操作を強制実行してください。 REBIND コマンドまたは db2rbind コマンドを実行すると、明示的な再バインドを強制できます。
  • dec_arithmetic 構成パラメーターを変更した後で、マテリアライズ照会表 (MQT) に異なる結果が含まれることがあります。 以前に作成された MQT が新しい形式に従ったデータのみを含むようにするには、REFRESH TABLE ステートメントを使用してその MQT をリフレッシュします。
  • 変更後の形式がトリガーの結果に影響を与える場合があります。 dec_arithmetic 値を変更しても、既に書き込まれているデータには影響がありません。
  • 10 進数除算に関係するチェック制約によって、以前は受け入れられていた一部の値が制約される場合があります。 このような行は、制約に違反するようになっていますが、以下のいずれかのイベントが発生するまでは検出されません。
    • チェック制約行に関係する列の 1 つが更新された。
    • IMMEDIATE CHECKED オプションを指定した SET INTEGRITY ステートメントが処理された。
    以下の手順によって、このような制約のチェックを強制実行できます。
    1. ALTER TABLE ステートメントを実行してチェック制約をドロップします。
    2. ALTER TABLE ステートメントを実行して制約を追加します。
  • dec_arithmetic の値を変更した後で、結果が dec_arithmetic 値の変更の影響を受ける生成列の値に依存するすべての静的 SQL パッケージを再コンパイルします。 db2rbind コマンドを実行して、すべてのパッケージを再バインドできます。
  • 計算が dec_arithmetic に依存している、式ベースのキーを持つ索引は、同一行でも異なる場合があります。 値の相違は、一方の行が dec_arithmetic の変更前に挿入され、もう一方の行が変更後に挿入された場合に生じます。 dec_arithmetic 構成パラメーターの値を変更した後で、すべての潜在的に影響を受ける式ベースの索引をドロップして再作成します。 影響を受けるかどうか確認できない特定の式ベースの索引がある場合は、索引に間違った値が含まれないようにするため、その索引をドロップして再作成してください。