视图中的日期列表

时间:2012-10-02 08:46:41

标签: sql oracle date views

好的,这是一个类似于我以前的问题,但是它需要一个带有1个变量的视图,并且它需要尽可能简单。 我需要一个视图来生成给定月份内的日期列表(即变量)。

这是我到目前为止所做的:

create view monthview(datesetter) as (   
select
to_date(to_date(datesetter),'MM.YYYY')-1 + level as DateRange
from
dual
where
(to_date(to_date(datesetter),'MM.YYYY')-1+level) <= sysdate
connect by level<=31);

并且应该通过以下方式调用视图:

select * from monthview where datesetter='02.2008';

然后生成一个类似

的列表
01.02.2007
02.02.2007

等等

它要么告诉我,我无法编译视图,因为我使用datesetter时出错,或者它编译视图但是它告诉我有一个非数字值,其中数字值是当我使用'datesetter'时需要....

感谢您的任何想法或帮助

1 个答案:

答案 0 :(得分:2)

尝试使用流水线功能:

create or replace type date_array_type as table of date;

create or replace function monthview (datesetter varchar2) return date_array_type
pipelined as

cursor c is 
select to_date(level || '.' || datesetter , 'dd.mm.yyyy') dt
from dual
connect by level <= to_number(to_char(
  last_day(to_date(datesetter , 'mm.yyyy')), 'dd'));

begin

for r in c loop

  pipe row(r.dt);

end loop;

return;

end;

现在您可以像这样使用它:

select * from table( monthview('03.2012'));

Here是一个小提琴