------陈渝文统计报表优化一下午
1 create or replace type t_test as object 2 ( 3 HDID varchar2(60), 4 省份 varchar2(60), 5 派驻检察室数目 varchar2(60), 6 检所1 varchar2(60), 7 检所2 varchar2(60), 8 检所3 varchar2(60), 9 检所4 varchar2(60) 10 ) 11 / 12 create or replace type t_test_table as table of t_test; 13 / 14 CREATE OR REPLACE FUNCTION FN_GET_ADMINISTRATIVE_LEAF RETURN t_test_table AS 15 16 cursor shengji_c is 17 select T1.PINDEX, t1.B00, t1.B0101 18 from B01 t1 19 where t1.ZDYXB0132 = ‘M03‘ 20 and (t1.flag is null or t1.flag = ‘0‘); 21 22 TYPE refcur_type IS REF CURSOR; 23 book_refcur refcur_type; 24 25 V_PINDEX varchar2(100); 26 V_B00 varchar2(100); 27 V_B0101 varchar2(100); 28 29 V_ZDYXB0131 varchar2(100); 30 31 V_JS01 number := 0; 32 V_JS02 number := 0; 33 V_JS03 number := 0; 34 V_JS04 number := 0; 35 36 V_INDEX number := 1; 37 38 v_test t_test_table := t_test_table(); 39 begin 40 41 open shengji_c; 42 loop 43 fetch shengji_c 44 into V_PINDEX, V_B00, V_B0101; 45 exit when shengji_c%notfound; 46 47 V_JS01 := 0; 48 V_JS02 := 0; 49 V_JS03 := 0; 50 V_JS04 := 0; 51 52 open book_refcur for 53 SELECT ZDYXB0131 54 FROM B01 t 55 where (t.ZDYXB0131 like ‘%170%‘ or t.ZDYXB0131 like ‘%171%‘ or 56 t.ZDYXB0131 like ‘%172%‘ or t.ZDYXB0131 like ‘%173%‘) 57 start with b00 = V_B00 58 CONNECT BY PRIOR B00 = B0144B 59 and (t.flag is null or t.flag = ‘0‘); 60 61 loop 62 fetch book_refcur 63 into V_ZDYXB0131; 64 exit when book_refcur%notfound; 65 if (V_ZDYXB0131 like ‘%170%‘) then 66 V_JS01 := V_JS01 + 1; 67 end if; 68 if (V_ZDYXB0131 like ‘%171%‘) then 69 V_JS02 := V_JS02 + 1; 70 end if; 71 if (V_ZDYXB0131 like ‘%172%‘) then 72 V_JS03 := V_JS03 + 1; 73 end if; 74 if (V_ZDYXB0131 like ‘%173%‘) then 75 V_JS04 := V_JS04 + 1; 76 end if; 77 end loop; 78 79 v_test.extend(); 80 v_test(V_INDEX) := t_test(V_B00, 81 V_B0101, 82 ‘aaa‘, 83 V_JS01, 84 V_JS02, 85 V_JS03, 86 V_JS04); 87 V_INDEX := V_INDEX + 1; 88 89 end loop; 90 close shengji_c; 91 92 RETURN v_test; 93 END;
时间: 2024-10-31 02:13:53