それが可能か不可能かという問題ではなく、これが正しい方法であればそうすべきだったのです。もちろん、あなたがやっている方法でそれを行うことはできますが、専門家が示唆しているように、それは正しく効率的な方法ではありません.あなたがそれを行う方法を参照してください。 PS:テストされていません。
CREATE OR REPLACE PACKAGE BODY TESTJNSABC IS -- FUNCTION IMPLEMENTATIONS FUNCTION get_num(num IN NUMBER) RETURN SYS_REFCURSOR AS my_cursor SYS_REFCURSOR; BEGIN -- OPEN my_cursor FOR WITH ntable AS ( SELECT 1 ID, 111 AGT, 'ABC' DESCRIP FROM DUAL UNION ALL SELECT 2 ID, 222 AGT, 'ABC' DESCRIP FROM DUAL UNION ALL SELECT 1 ID, 333 AGT, 'ABC' DESCRIP FROM DUAL ) SELECT AGT FROM ntable WHERE ID = num; RETURN my_cursor; END; -- PROCEDURE IMPLEMENTATIONS PROCEDURE testingabc AS --Creating a collection to hold return of the function type y is table of varchar2(1000) index by pls_integer; var_z y; var_1 varchar2(100); BEGIN Select get_num(1) bulk collect into var_z from dual; For i in 1..var_z.count loop WITH xtable AS ( SELECT 111 AGT, 'A' DESCRIP FROM DUAL UNION ALL SELECT 222 AGT, 'B' DESCRIP FROM DUAL UNION ALL SELECT 333 AGT, 'C' DESCRIP FROM DUAL ) SELECT DESCRIP into var_1 FROM xtable WHERE AGT = var_z(i) ; ---Check each record dbms_output.put_line(var_1); end loop; END testingabc; END TESTJNSABC;
プレ>