create or replace produce a is start_time date;
end_time date;begin start_time:=to_date('2012-01-01','yyyy-mm-dd');
end_time :=to_date('2012-05-01','yyyy-mm-dd'); exit when start_time>end_time
loop
b(start_time);
start_time:=start_time+1;
end loop
end a;创建一个JOB,会不会 每天都执行这个语句,还是说一旦退出就永远不会再执行?
如果我想这个存储过程只执行一次,怎么板?
end_time date;begin start_time:=to_date('2012-01-01','yyyy-mm-dd');
end_time :=to_date('2012-05-01','yyyy-mm-dd'); exit when start_time>end_time
loop
b(start_time);
start_time:=start_time+1;
end loop
end a;创建一个JOB,会不会 每天都执行这个语句,还是说一旦退出就永远不会再执行?
如果我想这个存储过程只执行一次,怎么板?
CREATE OR REPLACE PROCEDURE PRO_A
IS
...还有exit when start_time>end_time判断是写在游标LOOP里面的,start_time是时间类型如何进行+1操作, b(start_time);是什么东西,看不懂。
end_time date;begin start_time:=to_date('2012-01-01','yyyy-mm-dd');
end_time :=to_date('2012-05-01','yyyy-mm-dd'); exit when start_time>end_time
loop
a(start_time);
start_time:=start_time+1;
end loop
end a_exe;
a_exe 是执行过程名, a(start_time) 是一个过程函数,输入参数是个日期型的
a_exe();
end;
另外,loop ... exit when ... end loop写法有问题,还少了几个分号,
我改了下,不知道是不是你要的
create or replace
PROCEDURE a_exe is
start_time date :=to_date('2012-01-01','yyyy-mm-dd');
end_time date :=to_date('2012-05-01','yyyy-mm-dd');
begin
loop
--dbms_output.put_line(start_time);
a(start_time);
start_time:=start_time+1;
exit when start_time>end_time;
end loop;
end a_exe;
exit when start_time>end_time
我要调用该函数 计算2010-01-01到2010-02-02的数据
就写了一个执行函数a_exe
在创建一个Job调用a_exe
我希望只是执行一次得出结果就可以了,而不是每天都执行,重复的操作。
放到loop里面?begin
a_exe();
end;这段话放到哪里?[Quote=引用 4 楼 的回复:]