while v_temp is not nullloop v_i := instr(v_temp,','); IF v_i > 0 then v_temp1 := substr(v_temp,1,v_i-1); v_zjhm := f_ldbzjc_ajsl_getZjhm(v_temp1); v_temp := substr(v_temp,v_i+1); ELSE v_temp1 := v_temp; v_zjhm := f_ldbzjc_ajsl_getZjhm(v_temp1); v_temp := null; END IF; v_zjhmString := v_zjhmString || v_zjhm || ','; end loop; v_zjhmString := substr(v_zjhmString,1,length(v_zjhmString)-1); RETURN v_zjhmString; END f_ldbzjc_ajsl_getZjhmString; / 案例不错。。。。。 。。。 。。
CREATE
OR
REPLACE
Procedure
Report_tsgssp_tsgszdqk(
Pi_Bbxh In Varchar2, -- 报表序号 Pi_Cxtjtj In Varchar2, -- 报表统计条件 Pi_Bbsjxh In Varchar2, -- 报表数据序号 Po_Fhz Po_Msg ) Is -- 拆分报表统计条件变量 TYPE cursor_type IS REF CURSOR; result_cursor cursor_type; TYPE t_ClientInfo IS Record( xm Varchar2(1000),----项目 dqmqyhs Number,----截至当期末已审批并在有效期内的企业户数 dqqyhs Number,----其中,当期审批企业户数 dqmtsgszgs Number,---截至当期末已审批并在有效期内特殊工时涉及职工人数 dqzgzgs Number,--当期审批企业在岗职工人数 dqtsgszzgs Number,--其中,实行特殊工时制度岗位职工人数 dqbdsqyhs Number,--当期审批不定时工作制企业户数 dqbdszgs Number,--当期审批不定时工作制涉及职工人数 dqzhjsqys Number, --当期审批综合计算工时企业户数 Out Varchar2, -- 返回值 Out Varchar2 -- 返回信息
dqzhjszgs );
Number --当期审批综合计算工时涉及职工人数
rec_result t_ClientInfo; v_rownum NUMBER:=0; FOR AAB022 IN AAB022INFO Loop v_knrdview:='Select BAE070,BBE143,BEE041,BAD015,AAB022,BAD013,BAD014 From ZD40 Where BAD020=''05'' '''||v_ssqy||'%'' and BBE143 < To_Char(To_Date('''||v_JSSJ||''', ''yyyy-mm-dd'')+1, ''yyyy-mm-dd'') and AAB022='''||AAB022.AAB022||''' union all Select '''||v_KSSJ||''' BAE070, '''||v_KSSJ||''' ''0'' BEE041, ''0'' BAD015, aaa102 AAB022, ''0'' BAD013, ''0'' BAD014 From aa10 Where aaa100=''AAB022'' And aaa102='''||AAB022.AAB022||'''and aaa102 not in (Select AAB022 From ZD40 Where BAD020=''05'' BAD012 like '''||v_ssqy||'%'' and BBE143 < To_Char(To_Date('''||v_JSSJ||''', ''yyyy-mm-dd'')+1, ''yyyy-mm-dd'') )'; v_Sql:='SELECT (Select aaa103 from AA10 where AAA100=''AAB022'' and aaa102=AAB022) xm, '--项目 ||' FROM ('||v_knrdview||') group by AAB022 order by AAB022'; open result_cursor For v_Sql; LOOP FETCH result_cursor INTO rec_result; EXIT WHEN result_cursor%NOTFOUND; v_rownum:=v_rownum+1; INSERT INTO Report_Bbhsj(BBXH, BBSJXH, HXH, BAE001, L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11) VALUES (pi_bbxh, pi_bbsjxh, v_rownum, v_xtjgdm, rec_result.xm,--项目 v_rownum,--序号 ); and BBE143, and BAD012 like
End Loop; End Loop;
TYPE 。。 REF CURSOR; TYPE 。。 IS Record(;open; 。。IS ; ; FETCH
oracle 记录类型(RECORD) 记录类型( )