ORA-06502:PL / SQL:数值或值错误:数字精度太大

时间:2014-02-18 23:15:52

标签: sql oracle

我正在尝试在Oracle SQL Developer中运行以下insert命令:

insert into work_comp_rates (company_id, work_comp_rt)
values ('101', 0.11);

这给了我这个错误:“ORA-06502:PL / SQL:数字或值错误:数字精度太大”

附加了一个触发器:

create or replace 
TRIGGER APPS.work_codes_trig
before insert or update ON APPS.WORK_COMP_RATES for each row
begin
  if inserting then
    if :NEW.RID is null then
      :NEW.RID := it_api.gen_pk;
    end if;
    :NEW.CREATED_ON := sysdate;
  end if;
  if updating then
    :NEW.MODIFIED_ON := sysdate;
  end if;
end;

如果我更换

:NEW.RID := it_api.gen_pk; 

:NEW.RID := 599;

插入语句有效。

IT_API正文:

create or replace
package body it_api
as
-- generates and returns unique number used for primary key values
function gen_pk
return number
is
l_pk number := 0;
begin
for c1 in (
select to_number(sys_guid(),'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') pk
from dual )
loop
l_pk := c1.pk;
exit;
end loop;
return l_pk;
end gen_pk;
end it_api;

我不太了解Oracle,而且该脚本是由其他人编写的。所以任何帮助都表示赞赏!

1 个答案:

答案 0 :(得分:0)

我创建了一个序列rate_seq,它将值递增1并替换

:NEW.RID := it_api.gen_pk; 

select rate_seq.nextval
into :new.rid
from dual;

解决了这个问题。