创建一个循环写入数据有事务提交的oracle函数示例

/*创建函数*/
create or replace function fnc_testtempInfo(startDate IN varchar2,
endDate in varchar2)
return VARCHAR2 is
v_status VARCHAR2(50);--临时变量
v_paramDate VARCHAR2(50);--全局参数变量
v_StartDate varchar2(10) := startDate;--传入参数
v_EndDate varchar2(10) := endDate;--传入参数
/*声明一个日期参数游标*/
cursor paramDate_cursor is
/*该区间日期内 所有日期 起点循环日期*/
SELECT to_char(TO_DATE(v_StartDate, 'YYYY-MM-DD') + ROWNUM - 1,'yyyy-mm-dd') paramDate /*StartDate*/
FROM DUAL
/*区间范围*/
CONNECT BY ROWNUM <= TO_DATE(v_EndDate, 'YYYY-MM-DD') /*enddate*/
-TO_DATE(v_StartDate, 'YYYY-MM-DD') + 1 /*StartDate*/
;
begin
/*开启游标,循环*/
for p_cur in paramDate_cursor loop
v_paramDate := p_cur.paramDate;/*将游标里的每个日期依次赋值给变量参数*/

/*循环体内 逻辑处理-按日期依次写入数*/
insert into ldcode (CODETYPE, CODE, CODENAME, CODEALIAS, COMCODE, OTHERSIGN)
values ('tempSaveType', v_paramDate,'测试数据', null, null, null);

--事务提交,每个循环提交一次
commit;

--循环结束
end loop;

--正常处理返回
--v_status := '1';
return v_paramDate;
EXCEPTION
WHEN OTHERS THEN
--异常返回
--v_status := '-1';
return v_paramDate;
end;
/

posted @ 2021-12-31 16:28  小年的西瓜  阅读(269)  评论(0编辑  收藏  举报