关于游标的文件。
create or replace
procedure hourInDayaascursor unitAll is select unit_id from tbl_unit_info;--所有单位cursor typeAll is select id from tbl_en_type; --所有分类--cursor hournum is select EN_VAL_ORG,EN_VAL_STD,EN_COST,UNIT_ID,SUPER_ID,INDS_ID,EN_TYPE_ID,STAND_COE from tbl_unit_en_type_hour --where to_date(sysdate-1,'dd-mon-yyyy') = to_date(en_date,'dd-mon-yyyy'); cursor hournum(unitid varchar2,typeid varchar2) is select * from tbl_unit_en_type_hour --带参数的游标where to_date(sysdate-1,'dd-mon-yyyy') = to_date(en_date,'dd-mon-yyyy')and unit_id = unitid and en_type_id = typeid; --unit varchar2(32); --接受所有单位unit tbl_unit_info.unit_id%type; --给unit 设置 与tbl_unit_info表。unit_id字段类型相同--typea varchar2(32); --接受所有分类typea tbl_en_type.id%type; -- 给typea 设置 tbl_en_type 表 id字段类型相同--hournums varchar(32); --接受小时表查询出来的数据hournums tbl_unit_en_type_hour%rowtype; --定义一个游标变量与tbl_unit_en_type_hour表一行数据类型相同--unitid varchar(32); --保存单位id--typeIdd varchar(32);envalorg number;envalstd number;encost number;flag number;unit_id varchar2(32);type_id varchar2(32);beginenvalorg :=0;envalstd :=0;encost :=0;flag :=0;for unit in unitAll loop --1 begin--2 unit_id := unit.unit_id; for typea in typeAll loop --3 begin --4 type_id :=typea.id; -- dbms_output.put_line(unit_id||'------'||type_id); -- dbms_output.put_line('ccccccccccccccccccccc'); for hournums in hournum(unit_id,type_id) loop--5 hournum begin--6 dbms_output.put_line('ssssssssssssssssssssssssssss'); envalorg := envalorg + hournums.EN_VAL_ORG; envalstd := envalstd + hournums.EN_VAL_STD; encost := encost + hournums.EN_COST; flag :=1; end;--6 end loop;--5 if flag=1 then begin INSERT INTO TBL_UNIT_EN_TYPE_DAY ( id,EN_VAL_ORG, EN_VAL_STD, UNIT_ID, SUPER_ID, INDS_ID, EN_TYPE_ID, EN_DATE, CREATED_DATE, CREATED_BY, CREATED_PRG_NM, UPDATED_DATE, UPDATED_BY, UPDATED_PRG_NM, MODIFY_COUNT, STAND_COE, COUNT_FLAG, EN_COST) VALUES ( USER_SEQ.nextval,envalorg,envalstd ,unit_id , '402881fa3a687abb013a688885f1000b', '402881ef3b5f0667013b5f082db60002',type_id , sysdate, sysdate, 'system', 'system', sysdate, 'system', 'system', '0', '0', '0', encost); COMMIT; dbms_output.put_line(encost); dbms_output.put_line(envalorg); dbms_output.put_line(envalstd); flag := 0; envalorg :=0; envalstd :=0; encost :=0; end; end if; end;--4 end loop;--3 end;--2 end loop;end;执行语句:set serveroutput on;execute hourInDaya;