0
Simple Stored Procedure to Load the Cursor Dynamically:
create or replace procedure asf_cursor is
TYPE EmpCurTyp IS REF CURSOR;
c2 EmpCurTyp;
cursor C1 is (select 1 a from dual union all select 2 a from dual);
dynamic_query varchar2(1000);
i int;
var1 varchar(100);
BEGIN
open c1;
loop
fetch c1 into i;
EXIT WHEN c1%NOTFOUND;
dynamic_query:= 'select '''||'~'||i||''' from dual';
open c2 for dynamic_query;
LOOP
FETCH c2 INTO var1;
EXIT WHEN c2%NOTFOUND;
END LOOP;
close c2;
DBMS_OUTPUT.PUT_LINE(var1);
end loop;
close c1;
END;
set serveroutput on
execute asf_cursor;
Exception Handling for Table Not Found:
-- set serveroutput on;
DECLARE
TYPE EmpCurTyp IS REF CURSOR;
c2 EmpCurTyp;
var1 varchar2(30);
drop_tab varchar2(100):='Select * from duall union all Select cast(2 as varchar(5)) from duall';
clob_out clob;
BEGIN
/*
open c2 for select * from duall;
LOOP
FETCH c2 INTO var1;
EXIT WHEN c2%NOTFOUND;
dbms_output.put_line(var1);
close c2;
END LOOP;
*/
open c2 for drop_tab;
loop
fetch c2 into var1;
EXIT WHEN c2%NOTFOUND;
clob_out:=clob_out||var1;
end loop;
close c2;
dbms_output.put_line(clob_out);
EXCEPTION
WHEN OTHERS THEN
IF (SQLCODE = -942) THEN
DBMS_OUTPUT.PUT_LINE('Table Not Found');
clob_out:='~'||null;
dbms_output.put_line(clob_out);
END IF;
END;
0Awesome Comments!