Hitachi

Hitachi Advanced Data Binder SQLリファレンス


7.26.3 除算結果のデータ型がDECIMAL型の場合の留意事項

除算結果のデータ型がDECIMAL型の場合,除算結果の位取りは,サーバ定義またはクライアント定義のadb_sql_prep_dec_div_rs_priorオペランドの指定値によって決まります。

〈この項の構成〉

(1) 実表を検索する場合

次に示す内容の実表T1を検索する場合,adb_sql_prep_dec_div_rs_priorオペランドの指定値によって実行結果が変わります。

[図データ]

実行するSELECT

SELECT "C1"/"C2" AS "除算結果" FROM "T1"

(2) ビュー表を検索する場合

CREATE VIEW文の問合せ式本体に指定された除算(四則演算)の結果のデータ型がDECIMAL型の場合,その精度と位取りは,サーバ定義またはクライアント定義のadb_sql_prep_dec_div_rs_priorオペランドの指定値(ビュー表を検索したときの指定値)によって決まります。

(例)

T1の内容は次のとおりとします。

[図データ]

ビュー表の定義

CREATE VIEW "VT1"("VC1") AS SELECT "C1"/"C2" FROM "T1"
メモ

SQL_COLUMNS表に格納されているビュー表の列情報には,adb_sql_prep_dec_div_rs_priorオペランドの指定値(ビュー表を定義したときの指定値)によって決定されたデータ型が格納されます。そのため,ビュー表の定義時とビュー表の検索時で,adb_sql_prep_dec_div_rs_priorオペランドの指定値が異なると,次の2つのデータ型が不一致になることがあります。

  • ビュー表を等価変換した内部導出表の導出列のデータ型

  • SQL_COLUMNS表に格納されているビュー表の列のデータ型

なお,除算の第1演算項および第2演算項が定数の場合,除算結果の精度と位取りは,ビュー表を定義したときのadb_sql_prep_dec_div_rs_priorオペランドの指定値によって決定されます。