实现输入开始和结束号码,每个号码加1,循环结果等于结束号码时停止,同时把这组区间号码插入A表FPH字段,同时A表DWDM字段写入固定值"35" ,DWMC字段写入固定值"云南"。
例如输入'00000001','00020000' 区间执行这个存储过程,这时起始号码往下循环加1,直到结果等于00020000后停止。00000001..00000002...00000003...00000004......00000005............
--A表结构--
create table A(
DWDM VARCHAR2(20),
DWMC VARCHAR2(40),
FPH VARCHAR2(50));
------解决方案--------------------
create or replace procedure pro_insert_code(start_code in varchar2,
end_code in varchar2) is
v_dwmc varchar2(50) := '云南';
v_dwdm varchar2(50) := '35';
v_length number;
v_start number;
v_end number;
begin
select length(start_code) into v_length from dual;
v_start := to_number(start_code);
v_end := to_number(end_code);
for v_start in to_number(start_code) .. v_end loop
insert into a
(dwdm, dwmc, fph)
values
(v_dwdm, v_dwmc, lpad(v_start, v_length, '0'));
end loop;
end;
在命令窗口调用:
exec pro_insert_code('00000001','00020000');
查询插入结果:
select * from a order by fph;
查询结果:

------解决方案--------------------
改成这样效果一样吗?
create or replace procedure pro_insert_code(start_code in varchar2,
end_code in varchar2) is
v_dwmc varchar2(50) := '云南';
v_dwdm varchar2(50) := '35';
v_length number;
v_start number;
v_end number;
begin
select length(start_code) into v_length from dual;
for v_start in to_number(start_code) .. to_number(end_code) loop
insert into a
(dwdm, dwmc, fph)
values
(v_dwdm, v_dwmc, lpad(v_start, v_length, '0'));
end loop;
end;