[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 メーリングリストの案内