这是我的密码:
declare
cursor c1 is
select * from PUTRAJAYA.STRATA_PJ_BORANG4
WHERE HM_DETAIL_NOHMDETAIL is NOT NULL;
err_num number;
err_msg varchar2(250);
begin
for c1rec in c1 loop
BEGIN
insert into ET_MAIN_WPPJ_JOZRIN.IND_HKMLK
(HKMLK_ID, CREATED_BY, CREATED_DATE, LAST_MODIFIED_BY, LAST_MODIFIED_DATE, VERSION,
ID_HAKMILIK,NO_HAKMILIK, NO_BANGUNAN,NO_TINGKAT,NO_PETAK,UPI,FLAG_GANTUNG,
FLAG_TUKARGANTI,TARIKH_KUTIPAN_ETANAH
)
values (
SEQ_HKMLK.NEXTVAL,'DMS', SYSDATE, 'DMS', SYSDATE,'0',
(select substr(HM_DETAIL_NOHMDETAIL,1,17),
substr(HM_DETAIL_NOHMDETAIL,-8) from strata_PJ_BORANG4),
-- substr(STRATA_PJ_BORANG4.HM_DETAIL_NOHMDETAIL,1,17),
-- substr(STRATA_PJ_BORANG4.HM_DETAIL_NOHMDETAIL,-8),
(SELECT
HM_DETAIL_NOBGN,
HM_DETAIL_NOTKT,
HM_DETAIL_NOPETAK,
HM_DETAIL_NOHMDETAIL,
'N','N',
HM_DETAIL_PUNGUT_DATETIME
FROM STRATA_PJ_BORANG1 A, STRATA_PJ_BORANG4 B
WHERE A.DAF_HM_NOFAIL = B.HM_DETAIL_NOFAIL));
END;
END LOOP;
END;
以下是错误:
错误报告-ora-06550:第18行第5列:pl/sql:ora-00947:值不足ora-06550:第13行第5列:pl/sql:sql语句忽略06550。00000-“行%s,列%s:\n%s”*原因:通常是pl/sql编译错误。
2条答案
按热度按时间44u64gxh1#
首先让我们试着理解错误“值不够”的含义。它表明,对于insert into claues中的某些列,values子句中没有提供值。在您的例子中,insert into有15列,而values子句只有8个值。我已经在value子句中重新编写了您的子查询。请尝试执行这个,看看这是否适合你。
1hdlvixo2#
与要插入的列数相比,在代码中没有提供足够的值。这是因为子选择用于一列,而不是多列。我把你的陈述改写成了一个没有循环的插入。我使用cte(公共表表达式)将逻辑放在一个位置:
我做了一些关于连接的假设,看看你的代码。请确认这是否适合你。