我有大约500万条需要从一个模式的表复制到另一个模式的表(在同一个数据库中)的记录。我准备了一个脚本,但它给了我下面的错误。在Oracle PL/SQL中批量插入
ORA-06502: PL/SQL: numeric or value error: Bulk bind: Error in define
以下是我的脚本
DECLARE
TYPE tA IS TABLE OF varchar2(10) INDEX BY PLS_INTEGER;
TYPE tB IS TABLE OF SchemaA.TableA.band%TYPE INDEX BY PLS_INTEGER;
TYPE tD IS TABLE OF SchemaA.TableA.start_date%TYPE INDEX BY PLS_INTEGER;
TYPE tE IS TABLE OF SchemaA.TableA.end_date%TYPE INDEX BY PLS_INTEGER;
rA tA;
rB tB;
rD tD;
rE tE;
f number :=0;
BEGIN
SELECT col1||col2||col3 as main_col, band, effective_start_date as start_date, effective_end_date as end_date
BULK COLLECT INTO rA, rB, rD, rE
FROM schemab.tableb;
FORALL i IN rA.FIRST..rE.LAST
insert into SchemaA.TableA(main_col, BAND, user_type, START_DATE, END_DATE, roll_no)
values(rA(i), rB(i), 'C', rD(i), rE(i), 71);
f:=f+1;
if (f=10000) then
commit;
end if;
end;
能否请你帮我找到那里的错误所在?
而不是声明SchemaA.TableA.main_col%TYPE,我也试着给varchar2(10),日期等作为数据类型,但它仍然给出了相同的错误。 – Nik