Я согласен с @Used_by_Already, что вам лучше всего обновить ваши инструменты BI, чтобы они работали с DECFLOAT
, или использовать VIEW
s для преобразования в INT
или DECIMAL
(или даже FLOAT
!?) на лету.
Но если вы хотите изменить тип данных существующей таблицы, вы можете сделать это (с некоторыми ограничениями), как показано в примере ниже
create table df(df decfloat(16) not null primary key) organize by row;
insert into df values 1.0, 2.00, 3.120;
select * from df;
дает
DF
------------------------
1.0
2.00
3.120
3 record(s) selected.
, затем
alter table df alter column df set data type integer;
возвращает
SQL0478N The statement failed because one or more dependencies exist on the
target object. Target object type: "COLUMN". Name of an object that is
dependent on the target object: "SQL180924130131030". Type of object that is
dependent on the target object: "PRIMARY KEY". SQLSTATE=42893
, поэтому
alter table df drop primary key;
alter table df alter column df set data type integer;
затем
select * from df
дает
DF
-----------
1
2
3
3 record(s) selected.
, но
insert into df values 4
дает сбой из-за ожидаемой реорганизации
SQL0668N Operation not allowed for reason code "7" on table "PAUL.DF".
SQLSTATE=57016
, поэтому
call admin_cmd('reorg table df');
insert into df values 4;
alter table df add primary key (df);
select * from df;
дает
DF
-----------
1
2
3
4
4 record(s) selected.