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),这是不对的

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥30 用arduino开发esp32控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题