当前位置: 代码迷 >> Oracle管理 >> 这样的循环insert语句该如何写
  详细解决方案

这样的循环insert语句该如何写

热度:106   发布时间:2016-04-24 04:18:12.0
这样的循环insert语句该怎么写?
基本的insert语句为:
insert v_school (name,address )values (樱花学校,北京路)

如果要插入的数据中address是不变的,name是经常变化的。

能不能insert语句的存储过程获取入参(name),去循环插入数据呢(入参多个的情况)


------解决方案--------------------
使用下面存储过程可以实现
create or replace procedure pro_insert_school(i_address in varchar2,--地址
  i_name in varchar2--多个名字以,分隔,如'abc,bcd'
  )
 as
 v_substr_name varchar2(50);
 v_loop_num number(10);
 v_name varchar2(32000);
 begin
   v_name:=','
------解决方案--------------------
i_name;
  select length(v_name)-length(replace(v_name,',','')) into v_loop_num  from dual;--计算名字个数
   for ii in 1..v_loop_num loop
     if ii<v_loop_num then
     v_substr_name:=substr(v_name,instr(v_name,',',ii)+1,instr(v_name,',',ii+1)-instr(v_name,',',ii)-1);
    else
       v_substr_name:=substr(v_name,instr(v_name,',',ii)+1);
       end if;
    --dbms_output.put_line(v_substr_name);
   insert into v_school(name,address)values (v_substr_name,i_address);
   end loop;
 end;
  相关解决方案