解决方案 »

  1.   

    应该先定义type varchar_array为数组类型
      

  2.   

    --创建数组
    create or replace type varray_list as varray(30) of varchar2(50); --创建procedure
    create or replace procedure INSER_OR_UPDATE_WORLD_TOTAL(p_varlist in varray_list,result out number)   
    is  
    v_str varchar2(50);   
    l_count number;
    begin  
      result:=0;
          for i in 1..p_varlist.count   loop 
                select count(*) into l_count from world_total where sysid =p_varlist(i);
                if l_count>0 then
                  update world_total set count=count+1 where sysid =p_varlist(i);
                  else
                    insert into world_total(SYSID,COUNT) values(p_varlist(i),1);
                    end if;
                    result:=result+1;
          end loop;  
          commit; 
    end; --调用proceduredeclare  
    my_var varray_list:=varray_list('g','m','d','s','d');   
    l_count number;
    begin  
          INSER_OR_UPDATE_WORLD_TOTAL(my_var,l_count);    
    end; 
      

  3.   

    很忏愧,第一次用oracle,以前在开发中也没用过存储过程,见笑了!
    创建数组中:create or replace type varray_list as varray(30) of varchar2(50); 
    这里 varray(30)是指数组的容量大小为30吧,请问最大放多少合适呢?本来这代码是写在java程序当中的,但是考虑到数据很有超过10万,所以用存储过程来写!这样处理起来也更快速!
      

  4.   

    入门菜鸟表示刚知道ORACLE里也能用数组的……学习一下