我想将表中的数据和流水线表函数组合成一个SYS_REFCURSOR
。我的流水线表函数返回一个字符串数组
CREATE OR REPLACE FUNCTION function_name
RETURN string_type
PIPELINED
IS
BEGIN
PIPE ROW(pr_package.constant1);
PIPE ROW(pr_package.constant2);
RETURN;
END;
我尝试使用标量子查询
编写查询open cur_TEMP for
Select AR.*,(select * from table(FUNCTION)) from TABLE1 AR
但是会抛出错误“单行子查询返回多行”。
答案 0 :(得分:0)
自
select *
from table(FUNCTION)
返回多行,不能在标量子查询中使用它。您可以在流水线表函数的输出和表
之间执行笛卡尔积OPEN cur_temp
FOR SELECT ar.*, f.column_value
FROM table1 ar
CROSS JOIN table(function) f;
但是您很少想要生成笛卡尔积。如果表有N行,并且流水线表函数返回M行,那么我发布的查询将返回N * M行,这些行相当快。如果这不是您想要的,请更详细地解释所需的输出。