好的,这是一个类似于我以前的问题,但是它需要一个带有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'时需要....
感谢您的任何想法或帮助
答案 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是一个小提琴