我创建了一个包含属性和方法的对象类型。我使用返回该对象集合的管道函数访问该对象。这是有效的文件,除了我无法访问集合中返回的对象的任何方法。我可以很好地看到属性。
使用管道函数时是否可以访问对象的方法? 我不确定我是否误解了管道函数的工作原理,或者我应该使用不同的方法。
我这样做是为了加快长时间运行且占用内存的进程。目标是并行使用管道来加快一切速度并在此过程中学习一些新东西。
--object
TYPE schema1.cool_object FORCE AS OBJECT
(
-- Attributes
att_pid NUMBER,
att_some_number number,
--method
method function some_number_doubled Return Number.
)
--nested table type of cool_object
TYPE schema1.cool_object_ns IS TABLE OF schema1.cool_object;
--Function takes (weak) ref cursor returns nested table of the object type
function f_pipeline(p_rows SYS_REFCURSOR) Return schema1.cool_object_ns
--Call to pipeline function
SELECT * FROM TABLE (schema1.package1.f_pipeline (CURSOR ( Select pid, some_number from person_table)));
此返回一个对象,其中
attributes att_pid
和att_some_number
可在对象中访问,但不能访问方法。
尝试
SELECT t.*, t.some_number_doubled() FROM TABLE (schema1.package1.f_pipeline (CURSOR ( Select pid, some_number from person_table))) t;