我有real带有示例值的列类型表:
123456,12
0,12345678
以及存储过程中的代码:
CREATE OR REPLACE FUNCTION test3()
RETURNS integer AS
$BODY$
DECLARE
rec RECORD;
BEGIN
FOR rec IN
SELECT
gme.abs_km as km,
CAST(gme.abs_km as numeric) as cast,
round(gme.abs_km:: numeric(16,2), 2) as round
FROM gps_entry gme
LOOP
RAISE NOTICE 'Km: % , cast: % , round: %', rec.km, rec.cast, rec.round;
INSERT INTO test (km, casting, rounding) VALUES (rec.km, rec.cast, rec.round);
END LOOP;
RETURN 1;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
这是输出:
2014-02-05 12:49:53 CET 通知:公里:0.12345678,投:0.123457,回合:0.12 2014-02-05 12:49:53 CET 通知:公里:123456.12,演员:123456,回合:123456.00
带有列的数据库表NUMERIC(19,2):
km casting rounding
0.12 0.12 0.12
123456.00 123456.00 123456.00
为什么cast和round函数对值不起作用123456.12?