解决方案 »

  1.   

    使用下面存储过程可以实现
    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;
      

  2.   

    可以的,存储过程的入参name,定义为一个集合。
      

  3.   

    address是不变的,建议定义一个常量来保存address,name是经常变化的,按1L的说法,存在逗号分隔的字符串中吧,然后解析,insert语句建议绑定变量,提高性能。
      

  4.   

    支持1楼,逻辑很清晰。记得commit
      

  5.   

    如果楼主想要address不变化,可以在此字段设置一个默认的值(default)。数据插入时不插入address的值就行了,就用了默认的值。
      

  6.   

     弄到EXCEL里面,然后直接贴进去,哈哈