我有这样的功能:
CREATE OR REPLACE FUNCTION IntervalToSec(Run_Duration interval day to second) RETURN NUMBER IS
vSeconds NUMBER ;
BEGIN
SELECT EXTRACT( DAY FROM Run_Duration ) * 86400
+ EXTRACT( HOUR FROM Run_Duration ) * 3600
+ EXTRACT( MINUTE FROM Run_Duration ) * 60
+ EXTRACT( SECOND FROM Run_Duration )
INTO
vSeconds
FROM DUAL ;
RETURN vSeconds ;
END;
将间隔数据转换为总秒数然后我有选择查询:
select RUN_DURATION from SYS.USER_SCHEDULER_JOB_RUN_DETAILS WHERE JOB_NAME = 'WASTE_MESSAGES_JOB' and LOG_DATE > (systimestamp - INTERVAL '0 00:10:00.0'DAY TO SECOND(1) )
order by LOG_DATE desc;
输出如:+00 00:00:01.000000问题是如何将查询结果传递给函数?谢谢!
一个用户定义的函数没有区别的行为向任何内置的功能,所以你怎么称呼它,就像任何其他的功能- TO_CHAR,TO_DATE,TRUNC,圆形等。
您可以使用PL / SQL,Java或C编写用户定义的函数,以提供SQL或SQL内置函数中不提供的功能。用户定义的函数可以出现在任何可以出现表达式的SQL语句中。
例如,可以在下面使用用户定义的函数:
- SELECT语句的选择列表
- ...
因此,只需将函数作为查询的一部分进行调用即可:
select IntervalToSec(RUN_DURATION)
from SYS.USER_SCHEDULER_JOB_RUN_DETAILS
WHERE JOB_NAME = 'WASTE_MESSAGES_JOB'
and LOG_DATE > (systimestamp - INTERVAL '0 00:10:00.0'DAY TO SECOND(1) )
order by LOG_DATE desc;
只要查询列与函数期望的数据类型相同(或可以隐式转换为该类型),就可以将其作为函数的参数传递。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句