If you use an implicit cursor, Oracle performs the open, fetches, and
close for you automatically; these actions are outside of your
programmatic control.
If you are doing your DML dinamically be sure you are closing the cursor
after executing it:
cursor1 := dbms_sql.open_cursor;
dbms_sql.parse(cursor1, s1, dbms_sql.v7);
return_value := dbms_sql.execute(cursor1);
dbms_sql.close_cursor(cursor1);
Hope this helps.
Regards,
Claudio Duarte
Oracle LazyDBA home page