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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?