Nested PIPELINED function in pl/sql
我必须在 pl/sql 中编写一个嵌套的流水线函数,我尝试通过以下方式实现它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | CREATE PACKAGE BODY XYZ AS FUNCTION main_xyz RETURN data_type_1 pipelined IS BEGIN --code pipe ROW(sub_func); END; FUNCTION sub_func RETURN data_type_1 pipelined IS BEGIN --code pipe ROW(sub_func_1); END; FUNCTION sub_func_1 RETURN data_type_1 pipelined IS BEGIN --code pipe ROW(main_abc); END; END; CREATE PACKAGE BODY abc AS FUNCTION main_abc RETURN data_type_2 pipelined IS var data_type_2; BEGIN --code RETURN var; END; END; |
但是,我收到以下错误
[Error] PLS-00653 : PLS-00653: aggregate/table functions are not
allowed in PL/SQL scope
我哪里错了?是语法还是逻辑?
流水线函数一一提供行(按需),因此您不能一次从流水线函数中放置所有行。
在我看来,您需要以这种方式更改
1 2 3 4 5 6 7 8 9 |
考虑到
更新:我忘记提醒:不要滥用管道函数(如果您有其他选择)- 使用它们的查询可能性能不佳,因为数据库引擎无法为"不可预测的管道行"构建良好的执行计划。