I made that few months ago, I create 2 types in Oracle (EXTR_ELEC_TYPE_TABLE and EXTR_ELEC_TYPE) and a temporary table In iReport, I made a select using funcion (extr_elec_func is function) and using a parameter : select * from table(extr_elec_func($P{LIST_DOSS})) The script function : CREATE OR REPLACE FUNCTION TDQS."EXTR_ELEC_FUNC" ( list_doss VARCHAR)return EXTR_ELEC_TYPE_TABLE pipelinedis PRAGMA AUTONOMOUS_TRANSACTION; TYPE ref0 is REF CURSOR; myCursor ref0; out_rec EXTR_ELEC_TYPE := EXTR_ELEC_TYPE(null, null, null, null, null, null, null); BEGINPRC_EXTR_ELEC(list_doss); open myCursor forselectname,firstname,birthdate,accessnumber,reqdate,testcode,resultfrom TEMP_EXTR_ELECorder by name,firstname,reqdate asc; LOOP FETCH myCursor intoout_rec.NAME,out_rec.FIRSTNAME,out_rec.BIRTHDATE,out_rec.ACCESSNUMBER,out_rec.REQDATE,out_rec.TESTCODE,out_rec.RESULT; EXIT WHEN myCursor%NOTFOUND;PIPE ROW(out_rec);END LOOP;CLOSE myCursor; RETURN;END;/ call a procedure PRC_EXTR_ELEC which write raws in the temporary table TEMP_EXTR_ELEC