|
自己写的动态数组,还没时间去测试~~
但感觉应该没问题!!
-------------------------------------------------动态数组 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 -----------------------------------------------------******************------ |