Re: PLSQL: Closing all open cursors

From: Jared Still <jkstill_at_gmail.com>
Date: Thu, 24 Jan 2008 11:02:52 -0800
Message-ID: <bf46380801241102m121d4129n535a7b2d71ab7395@mail.gmail.com>


just use cursor attributes to determine if the cursor is open: declare

   cursor c1
   is
   select table_name from x;
   v_table_name x.table_name%type;
   v_count integer := 1;
begin

   open c1;
   loop

      fetch c1 into v_table_name;
      if c1%notfound or v_count > 2000 then
         exit;
      end if;
      v_count := v_count + 1;

   end loop;
  • does cursor need to be closed if c1%isopen then -- cursor is open dbms_output.put_line('Closing Cursor C1'); close c1; end if; end; /

On Jan 24, 2008 3:51 AM, Ricardo Santos <saints.richard_at_gmail.com> wrote:

>
>
> Hello to you all,
>
> I would like to know if there is any simple way to close all open cursors
> by a PL/SQL procedure when an exception raises and the control goes to the
> EXCEPTION section of the procedure. Should I explicitly use the CLOSE
> statement on the EXCEPTION section for all cursors I use on the procedure ?
>
> I'm using OPEN and FETCH statements to deal with my cursors and not FOR.
>
> During some tests to my application, I got an exception (divide by zero)
> and when I tried to execute the procedure on the same session, I got the
> error, cursor already open. My intention is to avoid this situation.
>
>
>
> I'm developing on Database Server version 10.1.0.5.
>
>
>
>
>
> Thanks for all your attention.
>
>
>
> Best Regards,
>
> Ricardo Santos.
>
>
>

-- 
Jared Still
Certifiable Oracle DBA and Part Time Perl Evangelist

--
http://www.freelists.org/webpage/oracle-l
Received on Thu Jan 24 2008 - 13:02:52 CST

Original text of this message