Plsql Oracle:从内联表函数返回CTE的结果集

Plsql Oracle:从内联表函数返回CTE的结果集,plsql,oracle10g,common-table-expression,user-defined-functions,Plsql,Oracle10g,Common Table Expression,User Defined Functions,我能够在TSQL中使用类似的函数,但我是PL/SQL的新手,我希望有人能向我解释为什么这个函数声明无法编译。 t_interval_list_table是对象t_interval的一种表类型,它的单个属性为varchar2(20)。Interval\u Get\u udf只返回varchar(2)类型的格式化字符串 您可能可以简化PL/SQL过程中的查询: SELECT t_interval(Interval_Get_udf(TRUNC(startTime) + ROWNUM/24 , 1))

我能够在TSQL中使用类似的函数,但我是PL/SQL的新手,我希望有人能向我解释为什么这个函数声明无法编译。
t_interval_list_table是对象t_interval的一种表类型,它的单个属性为varchar2(20)。Interval\u Get\u udf只返回varchar(2)类型的格式化字符串


您可能可以简化PL/SQL过程中的查询:

SELECT t_interval(Interval_Get_udf(TRUNC(startTime) + ROWNUM/24 , 1))
BULK COLLECT INTO intervalList
FROM dual 
CONNECT BY LEVEL <= 65536
选择t_interval(interval_Get_udf(TRUNC(startTime)+ROWNUM/24,1))
批量收集到间隔列表中
来自双重

按级别连接这一个很难读,所以我可能错了…

您是否缺少以下内容末尾的分号:
t_interval_list_table:=t_interval_list_table()

您介意将错误消息添加到问题中吗?类型插入正确吗?我收到一个错误ORA-00932:不一致的数据类型:预期的T_INTERVAL got T_INTERVAL_LIST_表请将完整的类型定义和INTERVAL_get_udf函数的签名添加到您的问题中。然后我们可以用我们能够首先测试的代码来回答。我在Oracle系统上做了一些测试,并试图根据您的描述猜测数据类型。缺少的是“批量收集”和杰夫·摩尔提到的分号。此外,我使用了TRUNC而不是TO_时间戳,因为您可能想切掉时间戳的时间部分。
SELECT t_interval(Interval_Get_udf(TRUNC(startTime) + ROWNUM/24 , 1))
BULK COLLECT INTO intervalList
FROM dual 
CONNECT BY LEVEL <= 65536