首先在oracle中新建两个数组类型:
create or replace type str_list as varray(1000) of varchar2(40)
create or replace type num_list as varray(1000) of number
新建存储过程
create or replace procedure getRainFallMessage(
--开始时间
beginTime in varchar2,
--结束时间
endTime in varchar2,
--返回市、县列表
citys out str_list,
--返回市、县降雨总量
sums out num_list
)
is
v_citys str_list:=str_list();
v_sums num_list:=num_list();
v_cityNames str_list:=str_list();
v_hasCountory number:=0;
begin
--获取所有县/市的行政区划编码
select getCountryAndCity() into v_citys from dual;
--遍历,获取每个县/市的降雨总量
for i in 1 .. v_citys.count loop
select count(*) into v_hasCountory from st_addvcd_d t where
rtrim(ltrim(t.addvcd))= rtrim(ltrim(v_citys(i)));
if(v_hasCountory<>0) then
v_sums.extend();
v_cityNames.extend();
--取得县/市名称
select t.addvnm into v_cityNames(i)
from st_addvcd_d t where
rtrim(ltrim(t.addvcd))= rtrim(ltrim(v_citys(i)));
--取得降雨量
select getRainSumByAddvcd(v_citys(i),beginTime,endTime)