0

これは以前と同様の問題ですが、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'を使用します...。

アイデアや助けてくれてありがとう

4

1 に答える 1

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'));

これがフィドルです

于 2012-10-02T09:22:31.027 に答える