【发布时间】:2021-10-15 10:53:59
【问题描述】:
我想创建一个函数来检索每条记录的有效年份。我在表中有 valid_from 和 valid_to 列。
例如valid_from = 2018-04-30和valid_to = 2020-06-30;函数应该产生三个值:2018、2019、2020。
我创建了一个类型和一个函数,但它根本不起作用......
create or replace type t_years is table of varchar2(4);
create or replace function func_year(d_from date, d_to date) return t_years pipelined
is
v_date date := '21/12/31 00:00:00';
max_date date := '99/12/30 00:00:00';
begin
for x in 1..2 loop
if d_from <= add_months(v_date,-1*12) AND (add_months(d_to,-1*12) >= v_date OR add_months(d_to,-1*12) = max_date) then return '2020';
elsif d_from <= add_months(v_date,-2*12) AND (add_months(d_to,-2*12) >= v_date OR add_months(d_to,-2*12) = max_date) then return '2019';
end if;
pipe row(x);
end loop;
return;
end;
【问题讨论】: