How to avoid PLS-00413 when using cursorType

From: Martin <martin.j.evans_at_gmail.com>
Date: Wed, 30 Apr 2008 09:05:20 -0700 (PDT)
Message-ID: <c01e6c96-c3fb-4277-8201-c34a83ef1cf0@y38g2000hsy.googlegroups.com>


Hi,

I have the following cut down pls/sql:

cur_entries cursorType;

IF condition

   open cur_entries for
     SELECT a from test_table1 for update of b; ELSE
   open cur_entries for
     SELECT a from test_table2 for update of b; END IF; LOOP
  FETCH cur_entries INTO var;
  EXIT WHEN cur_entries%NOTFOUND;

  IF condition

  • a lot of pl/sql here update test_table1 set b = 1 where current of cur_entries; ELSE
  • a lot of pl/sql here update test_table2 set b = 1 where current of cur_entries; END IF; END LOOP; and I am getting "PLS-00413: identifier in CURRENT OF clause is not a cursor name".

I don't quite understand this as I thought "cur_entries" was a cursor but I guess as it is defined as cursorType Oracle does not like it. Is there any way for me to avoid this without replicating all the code with two explicitly named cursors? All the code in the procedure is identical for both cursors other than the fetch and update.

Thanks. Received on Wed Apr 30 2008 - 11:05:20 CDT

Original text of this message