![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
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. |
#3
| |||
| |||
|
|
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. |
#4
| |||
| |||
|
|
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. |
#5
| |||
| |||
|
|
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. |
#6
| |||
| |||
|
|
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 |
#7
| |||
| |||
|
|
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 |
#8
| |||
| |||
|
|
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 |
#9
| |||
| |||
|
|
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 |
#10
| |||
| |||
|
|
On Apr 30, 7:34*pm, Maxim Demenko <mdeme... (AT) gmail (DOT) com> wrote: 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 Thanks. Do you know if it works with reference cursors? Both the tables in question contain exactly the same columns so it would be possible for me to create a record type of those columns. Martin |
![]() |
| Thread Tools | |
| Display Modes | |
| |