日期:2014-05-17 浏览次数:21011 次
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
------解决方案--------------------
貌似不是 过程的问题,我把那段代码放在SQL*PLUS里执行成功了的,可能是sql developer 设置的问题吧?。。