【发布时间】:2011-07-19 13:09:10
【问题描述】:
我能够在 TSQL 中获得一个类似的函数,但我是 PL/SQL 的相对新手,我希望有人能向我解释为什么这个函数声明无法编译。
t_interval_list_table 是对象 t_interval 的表类型,它具有 varchar2(20) 的单个属性。 Interval_Get_udf 只返回 varchar(2) 类型的格式化字符串
create or replace
FUNCTION fn_ExplodeIntervals (
startTime IN timestamp,
endTime IN timestamp,
inputInterval IN int)
RETURN t_interval_list_table AS intervalList t_interval_list_table := t_interval_list_table()
BEGIN
with SET0 as( select 1 from dual union all select 1 from dual)
, SET1 as ( select 1 from SET0 s1, SET0 s2)
, SET2 as ( select 1 from SET1 s1, SET1 s2)
, SET3 as ( select 1 from SET3 s1, SET3 s2)
, SET4 as ( select 1 from SET4 s1, SET4 s2)
, ControlSet AS (SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1 from Dual)) rid FROM SET4)
select t_interval(Interval_Get_udf(TO_TIMESTAMP(startTime, 'dd/mm/yyyy') + rid/24 , 1))
into intervalList
from ControlSet;
RETURN intervalList;
END fn_ExplodeIntervals;
【问题讨论】:
-
您介意在问题中添加错误消息吗?
标签: plsql oracle10g common-table-expression user-defined-functions