如何 运行 带有循环的oracle中的存储过程
how to run stored procedure in oracle with loop
我想通过匿名块调用过程,例如
开始 t_maha_del_22_06_p('22.06.2020');结束;
但我 运行 它一次,并希望用循环调用来占用一个大的日期时间
就像从 8 月 1 日到 15 日。我该怎么做?
create table t_maha_delete_22_06
(dt date,text varchar2(100));
create or replace procedure my_sch.t_maha_del_22_06_p(p_dt in date default trunc(sysdate) -1) as
begin
delete from t_maha_delete_22_06
where trunc(dt) = p_dt;
commit;
insert into t_maha_delete_22_06
select
trunc(p_dt) dt,
'blablabla' text from dual
commit;
end;
您可以按如下方式循环执行:
begin
For dt in (select date '2020-08-01' + level - 1 as dates
From dual
Connect by level <= date '2020-08-15' - date '2020-08-01')
Loop
t_maha_del_22_06_p(dt.dates);
End loop;
end;
/
我想通过匿名块调用过程,例如 开始 t_maha_del_22_06_p('22.06.2020');结束; 但我 运行 它一次,并希望用循环调用来占用一个大的日期时间 就像从 8 月 1 日到 15 日。我该怎么做?
create table t_maha_delete_22_06
(dt date,text varchar2(100));
create or replace procedure my_sch.t_maha_del_22_06_p(p_dt in date default trunc(sysdate) -1) as
begin
delete from t_maha_delete_22_06
where trunc(dt) = p_dt;
commit;
insert into t_maha_delete_22_06
select
trunc(p_dt) dt,
'blablabla' text from dual
commit;
end;
您可以按如下方式循环执行:
begin
For dt in (select date '2020-08-01' + level - 1 as dates
From dual
Connect by level <= date '2020-08-15' - date '2020-08-01')
Loop
t_maha_del_22_06_p(dt.dates);
End loop;
end;
/