当前位置:数据库 > Oracle >>

总结Oracle数组和BULK COLLECT INTO

总结Oracle数组和BULK COLLECT INTO
 
Oracle中使用数组,就像JAVA使用对象List<Object>一样,但是稍微有点不同。
对于每个Object使用之前,需要做声明。
 
具体实现如下:
Sql代码  
declare         
      --%ROWTYPE使用可以直接使用类型,非常方便,但是个性化定义就要使用Record如下:  
      type tbl_type is table of my_tbl%rowtype;  
      v_tbl_list tbl_type;  
     --声明需要集合类型及变量,参照字段的 type 来声明类型          
     type id_type is table of sr_contacts.sr_contact_id%type;        
     v_id id_type;                  
     type phone_type is table of sr_contacts.contact_phone%type;       
     v_phone phone_type;                  
     type remark_type is table of sr_contacts.remark%type;          
     v_remark remark_type;       
    
   cursor C_contacts_cur is select sr_contact_id,contact_phone,remark from sr_contacts where rownum <= 100000;           
    
begin         
    open C_contacts_cur;          
    loop          
        fetch all_contacts_cur bulk collect into v_id,v_phone,v_remark limit 256;          
        for i in 1..v_id.count loop --遍历集合          
     --用 v_id(i)/v_phone(i)/v_remark(i) 取出字段值来执行你的业务逻辑             
        end loop;          
        exit when C_contacts_cur%notfound; --exit 不能紧接 fetch 了,不然会漏记录          
    end loop;          
    close all_contacts_cur;          
end;    
  
--自定义record  
TYPE  my_record  IS RECORD (   
   name varchar2(25),  
   mobile varchar2(20),  
   email  varchar2(50)  
  );  
type my_type is table of my_record; --定义一个数组类型,相当于java中的List  
my_data_set my_type ; --声明我的个性化定义的数据类型。  
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,