ORA-06502:PL/SQL:数字或者二值错误
- 执行如下语句 遇到了 ORA-06502错误.
call BATCH_INSERT_A(10);
- 问题分析
A表中没有数据,运行存储过程执行到Line14的时候,n_id变量值为NULL,故 Line15会出现类型错误.
- 问题根本点
select max(id) into n_id from A; for i in n_id+1 ..n_id+insertNo loop
- 问题解决
在line14 Line15 之间添加 如下
if n_id is null then
n_id :=0;
end if;
- 表信息
CREATE TABLE "SS_HR"."A" ( "NAME" CHAR(64) NOT NULL ENABLE, "ID" NUMBER(*,0) NOT NULL ENABLE, PRIMARY KEY ("ID") ) TABLESPACE "CICI"
- 存储过程
1 create or replace procedure BATCH_INSERT_A(insertNo in integer) is 2 /*************************************************************** 3 *NAME : BATCH_INSERT_TABLEA_P 4 *PURPOSE : --向表A批量插入数据 5 *IMPUT : -- 批量插入数据的数量 6 *OUTPUT : -- N/A 7 *Author : -- CICI 8 *CreateDate : -- 2012、12、23 9 *UpdateDate : -- 10 ************************************************************/ 11 12 n_id integer; 13 begin 14 select max(id) into n_id from A; 15 for i in n_id+1 ..n_id+insertNo loop 16 17 dbms_output.put_line('NO is '||i|| 'NOW'); 18 dbms_output.put_line('NAME is '||'a'||i|| 'NOW'); 19 insert into 20 A(name,id ) 21 values('a'||i,i); 22 end loop; 23 24 end BATCH_INSERT_A;