2 qq 24072779 qq_24072779 于 2016.09.09 17:18 提问

ORACLE存储过程日期循环插入不知道错误的地方在哪。求解

create or replace procedure test_date

is
v_start date;
v_end date;
v_endday date;
v1 date;--日期
v2 date;--年月
v3 date;--月份
v4 date;--季度
v5 date;--一年中的第几周
v6 date;--星期几
v7 date;--是否周六周日
v8 date;--日期的上个月
v9 date;--本月最后一天
i number;
k number;
begin
v_start:=to_date('20160401','yyyymmdd');
v_end:=to_date('20160601','yyyymmdd');
k:=v_end-v_start;
for i in 0..k loop
v1:=v_start date+to_date(i);
v2:=to_char(v1,'yyyy-mm') ;
v3:=to_char(v1,'mm');
v4:=to_char(v1,'q');
v5:=to_char(v1,'ww');
v6:=to_char(v1,'dy');
v7:=decode(v1-1,1,0,2,0,3,0,4,0,5,0,6,1,7,1);
v8:=to_char(add_months(v6,-1),'yyyy-mm');
v9:=last_day(v1);
insert into test_date1 values(v1,v2,v3,v4,v5,v6,v7,v8,v9);
end loop
end test_date;


需要实现的功能建一个这样的表
create table test_date
(

v1 varchar2(40),
v2 varchar2(40),
v3 varchar2(40),
v4 varchar2(40),
v5 varchar2(40),
v6 varchar2(40),
v7 varchar2(40),
v8 varchar2(40),
v9 varchar2(40)
);

要求写一个存储过程
往这个测试表中插入数据
从2007年1月1日到2008年1月17日
循环插入

V1 V2 V3 V4(季度) V5(一年中的第几周) V6(星期几) V7(是否周六日) V8(上一月) V9(本月最后一天)
2007年01月01日 200701 01 1 1 1 0 200612 20070131
2007年01月02日 200701 01 1 1 2 0 200612 20070131
2007年01月03日 200701 01 1 1 3 0 200612 20070131
2007年01月04日 200701 01 1 1 4 0 200612 20070131
2007年01月05日 200701 01 1 1 5 0 200612 20070131
2007年01月06日 200701 01 1 1 6 1 200612 20070131
2007年01月07日 200701 01 1 1 7 1 200612 20070131
2007年01月08日 200701 01 1 2 1 0 200612 20070131

1个回答

lzp_lrp
lzp_lrp   Ds   Rxr 2016.09.09 17:25

for i in 0..k loop
v1:=v_start date+to_date(i);

问题出在这时顾,i为数值,你不用直接用to_date(i),这是不对的

Csdn user default icon
上传中...
上传图片
插入图片