[pgsql-jp: 28850] DECIMAL(NUMERIC)型がパススルークエリでエラーになる

Chie.M gontakun @ fish.co.jp
2003年 1月 30日 (木) 16:22:35 JST


Chieと申します。お世話になっております。

PosgreSQLのデータをAccessのパススルークエリで
表示をさせようとしています。

DECIMAL型を使用した計算式が存在すると、
 「指定された精度は、小数フィールドの精度と合致しません。」
というエラーが発生します。

計算式が存在しなければ、DECIMAL(NUMERIC)型でも
エラーにならないようです。

検証結果は下記のようになります。

パススルークエリでは、下記のように指定しています。
 SELECT * FROM v_test;

「指定された精度は、小数フィールドの精度と合致しません。」
というエラーが発生すビュー
-----------------------------
1 DECIMAL型にキャスト
--DROP VIEW v_test;
CREATE VIEW v_test AS
SELECT 1000.25000::decimal(6,2) ;


2 NUMERIG型にキャスト
--DROP VIEW v_test;
CREATE VIEW v_test AS
SELECT 1000.25000::numeric;


3 DECIMAL型のデータを集計
--DROP TABLE t_test;
CREATE TABLE t_test
(test_data DECIMAL(8,2));

INSERT INTO t_test VALUES(1000.12);
INSERT INTO t_test VALUES(12345.25);

--DROP VIEW v_test;
CREATE VIEW v_test AS
SELECT SUM(test_data) FROM t_test;


4 DECIMAL型のデータを集計
3のテーブルを元に、パススルークエリー側で
ビューではなく
 SELECT SUM(test_data) FROM t_test;
と指定。
-----------------------------
上記4点で、パススルークエリで
エラーが発生します。

一方、以下のように集計を使わない場合や、
FLOAT型の場合はエラーは発生しません。

パススルークエリでは、
 SELECT * FROM v_test;
と指定しています。
-----------------------------
1 DCIMAL型を集計しない
--DROP TABLE t_test;
CREATE TABLE t_test
(test_data DECIMAL(8,2));

INSERT INTO t_test VALUES(1000.12);
INSERT INTO t_test VALUES(12345.25);

--DROP VIEW v_test;
CREATE VIEW v_test AS
SELECT test_data FROM t_test;


2 FLOAT型にキャスト
--DROP VIEW v_test;
CREATE VIEW v_test AS
SELECT 1000.25000::float8;


3 FLOAT型を集計
--DROP TABLE t_test;
CREATE TABLE t_test
(test_data float8);

INSERT INTO t_test VALUES(1000.12);
INSERT INTO t_test VALUES(12345.25);

DROP VIEW v_test;
CREATE VIEW v_test AS
SELECT SUM(test_data) FROM t_test;
-----------------------------

この現象について、なにかお判りになる方いらっしゃいますでしょうか?

検索した所、下記のようなログが見つかったのですが、
 http://archives.postgresql.org/pgsql-interfaces/2001-05/msg00031.php
ODBCDriverは7.01.0006 日本語版 を使用しています。

宜しくお願いします。

--環境-------
サーバ
 RedHat 7.3
 PostgreSQL 7.2.3
 Apache 1.3.27

クライアント
 Windows XP/Access 2002
 PostgreSQL ODBC Driver 07.01.0006 日本語版
--------------------
----------------------------
Chie.M <gontakun @ fish.co.jp>
※メールアドレス変わりました。




pgsql-jp メーリングリストの案内