"terry" <94487509(at)qq(dot)com> writes:
> TEST=# CREATE TABLE B (C NUMERIC(8,3));
> CREATE TABLE
> TEST=# INSERT INTO B VALUES (12345.678);
> INSERT 0 1
> TEST=# SELECT * FROM B;
> c
> -----------
> 12345.678
> (1 row)
> TEST=# ALTER TABLE B ALTER COLUMN C TYPE NUMERIC(4,0);
> ERROR: numeric field overflow
> DETAIL: A field with precision 4, scale 0 must round to an absolute value
> less than 10^4.
> TEST=# ALTER TABLE B ALTER COLUMN C TYPE NUMERIC(5,0);
> ALTER TABLE
> /* scale lost */
> TEST=# SELECT * FROM B;
> c
> -------
> 12346
> (1 row)
This is exactly the intended behavior. We're not really interested in
Oracle's inability to handle the case.
regards, tom lane