17,086
社区成员
发帖
与我相关
我的任务
分享
create or replace
PROCEDURE DIM_TIME_PROC(
start_date IN VARCHAR2,
end_date IN VARCHAR2
)
AS
--定义变量
begin_time DATE; --开始时间
end_time DATE; --结束时间
dim_date DATE; --中间变量
--i NUMBER; --计数器
date_flag NUMBER; --会计区间值 本例取15 天
--vs_msg VARCHAR2(4000); --错误信息变量
--fmon_type VARCHAR2(20); --财务月类型
BEGIN
--fmon_type = FMONTH_TYPE;
begin_time := to_date(start_date,'yyyymmdd');
end_time := to_date(end_date,'yyyymmdd');
date_flag := to_number(end_time - begin_time);
IF date_flag < 0 THEN
BEGIN
dbms_output.put_line('输入有误,结束日期必须大于开始日期,请重新输入');
END;
ELSE
BEGIN
dim_date := begin_time;
while end_time >= begin_time
LOOP
BEGIN
INSERT INTO dim_time(
DAYKEY )
VALUES(
to_char(dim_date,'yyyymmdd'));
dim_date := dim_date + 1;
END;
end loop;
END;
END IF;
END DIM_TIME_PROC;
--你寫了個死循環
while end_time >= begin_time
--應改為
while end_time >= dim_date