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