我有一个函数 Func_A 返回一个表变量。现在我想创建另一个函数 Func_B 多次调用 Func_A 并返回 Func_A 的所有结果组合。但只返回 Func_A 的最后一个结果。如何将函数 a 的所有结果合并在一起?
CREATE TYPE RowType AS OBJECT (ItemNumber int, ItemName varchar2(255));
/
CREATE TYPE TableType AS TABLE OF RowType;
/
create or replace
FUNCTION Func_A (v_test int)
RETURN TableType AS
v_result TableType := TableType();
BEGIN
FOR i IN 1..5 LOOP
v_result.extend;
v_result(v_result.last) := RowType(i * v_test, 'Blub');
END LOOP;
RETURN v_result;
END;
create or replace
FUNCTION Func_B
RETURN TableType AS
v_result TableType := TableType();
BEGIN
FOR i IN 1..5 LOOP
SELECT cast(multiset (select * FROM TABLE(Func_A(i))) as TableType)
INTO v_result
FROM DUAL;
END LOOP;
RETURN v_result;
END;
SELECT * FROM TABLE(Func_B())
这应该是最有效的方法:
v_result := Func_A(i) MULTISET UNION ALL v_result;