Hi, i strucked up here. please help me. Create table t1(c1 number(4), c2 varchar2(100)); Insert into t1 values(10, ‘select * from temp1’); Create table temp1 (empno number(4), sal number(6), deptno number(2)); Insert into temp1 values(10,1200,20); Insert into temp1 values(20,1500,30); Insert into temp1 values(30,2000,40); =========================================== 1 declare 2 type refcur_type is ref cursor; 3 report_refcur refcur_type; 4 l_refcur report_refcur%type; 5 l_refcur1 number; 6 Cursor bom_cur is select * from t1; 7 a number; 8 b number; 9 c number; 10 d number; 11 l_sql varchar2 (1000); 12 Begin 13 for bom_cur1 in bom_cur loop 14 l_sql := bom_cur1.c2; 15 open report_refcur for l_sql; 16 fetch report_refcur into l_refcur1; 17 exit when report_refcur%notfound; 18 execute immediate l_sql into a, b, c; 19 d := 'a||,||b||,||c'; 20 close report_refcur; 21 dbms_output.put_line(a||' '||b||' '||c||' '||d); 22 end loop; 23* end; 24 declare * ERROR at line 1: ORA-01422: exact fetch returns more than requested number of rows ORA-06512: at line 18 ======================================== this is because of execute immediate of l_sql retuns more than one row as follows. ------------------------------ SQL> select * from t1; C1 C2 ---------- ---------------------- 10 select * from temp1 SQL> select * from temp1; EMPNO SAL DEPTNO --------- --------- --------- 10 1200 20 20 1500 30 30 2000 40 -------------------------------------- now i want a solution how to store/capture the data executed by execute immediate sql statement. eg: i have to store results of statement " select * from temp1". can i use PLSQL tables? Please let me know if u are not clear about the problem. thanks in advance,