[英]passing different date as parameter in calling a user defined function with a loop in oracle
假设我有一个用户定义的 function 以日期为参数,即 to_date,from_date 但它有一个限制,它可以提供最大限制为三个月的数据,但我需要一年的数据,我应该怎么做.. function
select *
from table(height_DOL.DOL_PKG_DATA.FN_GET_height_DATA(IN_FROM_EFFECTIVE_DATE => '11-JAN-20',IN_TO_EFFECTIVE_DATE => '11-APR-20'));
借助 oracle 中的循环
如果无法更改 function,则可以使用UNION
:
select *
from table(height_DOL.DOL_PKG_DATA.FN_GET_height_DATA(IN_FROM_EFFECTIVE_DATE => '11-JAN-20',IN_TO_EFFECTIVE_DATE => '11-APR-20'))
UNION ALL
select *
from table(height_DOL.DOL_PKG_DATA.FN_GET_height_DATA(IN_FROM_EFFECTIVE_DATE => '11-APR-20',IN_TO_EFFECTIVE_DATE => '11-JUN-20'))
UNION ALL
...
...
这是一种可用于过滤 1 年数据的方法-
SELECT *
From T
WHERE date_column > DATEADD(year,-1,GETDATE())
或这个
select *
from
height_DOL.DOL_PKG_DATA.FN_GET_height_DATA
where IN_FROM_EFFECTIVE_DATE => '11-JAN-20' and IN_TO_EFFECTIVE_DATE <= '11-APR-20';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.