qq_24072779 2016-09-09 09:18 采纳率: 0%
浏览 1963

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条回答 默认 最新

  • WorldMobile 2016-09-09 09:25
    关注

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

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

    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向