繁体   English   中英

在oracle中插入一行时出现无效数字错误

[英]invalid number error when inserting a row in oracle

我需要在 oracle 中的表中插入一行。

insert into policy_tab values ('4325','29-APR-98','29-APR-2007',32424,(select ref(a) from agent_tab a where a.nic='242424v'),claim_ntty(
claim_t('25-APR-2005','25-JUN-2005'),
claim_t('26-APR-2005','26-JUN-2005')
));

但是当我执行它会显示这个错误。 “ORA-01722:无效号码 ORA-06512:在“SYS.DBMS_SQL”,第 1721 行”

create type policy_ty as object(
 pid char(5),
 sDate date,
 eDate date,
 premium number(10,2),
 agent ref agent_ty,
 claims claim_ntty
);

create table policy_tab of policy_ty(
 pid primary key,
 agent SCOPE IS agent_tab
)
nested table claims store as claim_nttab;

create type claim_t AS OBJECT(
 eDate date,
 amount number(10,2)
);
create type claim_ntty as table of claim_t;

create type agent_ty as object(
 nic char(10),
 name varchar(50),
 address varchar(50),
 contactNo contactNo_vaty
) NOT FINAL;

create table agent_tab of agent_ty(
 nic primary key
);

那么如何解决呢?

从第一眼看,您需要像下面这样使用。 但是,提供的信息不足以解决问题。 也需要相关对象定义。

这必须改变 - '29-APR-98''29-APR-1998'

INSERT INTO policy_tab
        VALUES (
                  '4325',
                  '29-APR-1998',
                  '29-APR-2007',
                  32424,
                  (SELECT REF (a)
                     FROM agent_tab a
                    WHERE a.nic = '242424v'),
                  claim_ntty (claim_t ('25-APR-2005', '25-JUN-2005'),
                              claim_t ('26-APR-2005', '26-JUN-2005')));

编辑:

第二个观察。 您创建了以下对象:

create type claim_t AS OBJECT(
eDate date,
amount number(10,2)
);

并使用它:

claim_ntty (claim_t ('25-APR-2005', '25-JUN-2005'),
                                  claim_t ('26-APR-2005', '26-JUN-2005')));

第二个参数应该是number而不是date

所以你的插入应该是:

INSERT INTO policy_tab
        VALUES (
                  '4325',
                  '29-APR-1998',
                  '29-APR-2007',
                  32424,
                  (SELECT REF (a)
                     FROM agent_tab a
                    WHERE a.nic = '242424v'),
                  claim_ntty (claim_t ('25-APR-2005', 123), claim_t ('26-APR-2005', 456)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM