I'm trying to load data from a reference cursor into a table variable (or array), the reference cursor works if the table variable is based on existingtable% Rowtype, but my reference cursor gets loaded by joining several tables, so let me try to demonstrate an example of what I'm trying to do, and someone can help me
--created table create table SAM_TEMP( col1 number null, col2 varchar(100) null ); --created procedure which outputs results from that table CREATE OR REPLACE PROCEDURE SP_OUT_RefCur_PARAM( C_RESULT OUT SYS_REFCURSOR ) IS BEGIN OPEN C_RESULT FOR SELECT COL1,COL2 FROM SAM_TEMP; END SP_OUT_RefCur_PARAM; --seeing the output works like this DECLARE REFCUR SYS_REFCURSOR; outtable SAM_TEMP%rowtype ; BEGIN SP_OUT_RefCur_PARAM(REFCUR); LOOP FETCH REFCUR INTO outtable; EXIT WHEN REFCUR%NOTFOUND; dbms_output.put_line(outtable.col1); END LOOP; CLOSE REFCUR; END; --but when i try to run below script it is giving error,i think i am missing something DECLARE REFCUR SYS_REFCURSOR; TYPE REFTABLETYPE IS RECORD (COL1 NUMBER, COL2 VARCHAR(100)); TYPE TABLETYPE IS TABLE OF REFTABLETYPE; outtable TABLETYPE; BEGIN SP_OUT_RefCur_PARAM(REFCUR); LOOP FETCH REFCUR INTO outtable; EXIT WHEN REFCUR%NOTFOUND; dbms_output.put_line(outtable.col1); END LOOP; CLOSE REFCUR; END;
Error Report:
ORA-06550 line 9, column 21: PLS-00597 expression 'OUTTABLE' in the INTO list is of wrong type ORA-06550 line 9, column 3: PL/SQL SQL Statement ignored ORA-06550 line 11, column 32: PLS-00302 component 'COL1' must be declared
Not sure what I am missing, Thanks in advance for your help.
source share