Re: How to avoid PLS-00413 when using cursorType

From: Maxim Demenko <mdemenko_at_gmail.com>
Date: Wed, 30 Apr 2008 20:34:52 +0200
Message-ID: <4818BBCC.7080104@gmail.com>


Martin schrieb:
> 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.

The "current of" clause does apply only to cursors, not to cursor varibales which you are using.

Best regards

Maxim Received on Wed Apr 30 2008 - 13:34:52 CDT

Original text of this message