Oracle 动态数组(没测试。。。)

来源:互联网 发布:怎么检查网络连接状态 编辑:程序博客网 时间:2024/05/17 23:19

自己写的动态数组,还没时间去测试~~

但感觉应该没问题!!

 

-------------------------------------------------动态数组  Start------------------------------------------------------******************------

create or replace package body TestArray is
       TestID char,
       TestName varchar2
      
       --最好跟查询表返回结果Table结构相同
       type UserList is record (
            ListID char(9),
            ListName varchar2(30),
            ListAddress varchar2(30),
            ListMail varchar2(30)
       );
      
       type myList is table of UserList index   by   binary_integer; --定义myList为UserList数组;
       my_List myList;      --声明变量my_List为数组
      
       --方法调用开始
       procedure Test(
                 TestID in char(2)
                ,TestName in varchar2(30)
       )is
            ListAddress varchar2(30) := 'da lian';
            ListMail varchar2(30) :='mzyluokai@hotmail.com';    
            lst_sql varchar2(100);    
       begin
             lst_sql := lst_sql || 'select ListID,ListName,ListAddress,ListMail from Test' ;
            
             EXECUTE IMMEDIATE lst_sql    --动态SQL执行
             BULK COLLECT INTO my_List;   --将查询结果放入数组my_List
            
             --
             if ListInsert(my_List) = true then
               
             end if;        
       end Test;
      
       --带返回值的方法
       function ListInsert(
                ListResult in myList
       ) return boolean is
                data_count                  number(10)           := 0;              -- レコード数
       begin
               data_count :=ListResult.count;
              
               --循环
               FOR i IN 1..data_count LOOP
                  insert into testusers(userId,userName,userAdd,userMail)
                  values (ListResult(i).ListID,ListResult(i).ListName,ListResult(i).ListAddress,ListResult(i).ListMail);
               END LOOP;
              
               commit;
               return true;
      
       exception
               when others then
                   rollback;
                   return false;
       end ListInsert;
 begin
 
end TestArray;
-------------------------------------------------动态数组  end -----------------------------------------------------******************------