Hi Bill,
I didn't really do much checking, but my guess is that
the 'WHERE CURRENT OF' works here because you're
selecting * in the cursor.
If you, for instance, select columna_a as supposed to
*
then you will most likely get the error.
My guess is that this is just how ORACLE locks the
set when you select in the cursor; therefore, you
don't get the error. But,like I said, if you only
select column_a, and then, attempt to update column_b,
you will most likely see the error that you might have
expected.
Regards.
- Bill Buchan <wbuchan_at_uk.intasys.com> wrote:
>
>
> Why does the following work? I open a cursor with
> FOR UPDATE OF COLUMN_A
> and then do an update of COLUMNB, WHERE CURRENT OF
> the cursor. Surely I
> shouldn't be allowed to do that?
> (Ora 8.1.7.2)
>
> Any insight appreciated!
> Thanks
> - Bill.
>
>
> SQLWKS> create table test_table
> 2> (
> 3> column_a number,
> 4> column_b number
> 5> )
> 6>
> Statement processed.
> SQLWKS> insert into test_table values (1,2)
> 2>
> 1 row processed.
> SQLWKS> insert into test_table values (2,3)
> 2>
> 1 row processed.
> SQLWKS> insert into test_table values (3,4)
> 2>
> 1 row processed.
> SQLWKS> declare
> 2> cursor c1 is select * from
> test_table for update of column_a;
> 3> begin
> 4> for i in c1 loop
> 5> update test_table set
> column_b = column_b * 2
> 6> where current of c1;
> 7> end loop;
> 8> end;
> 9>
> Statement processed.
> SQLWKS> select *
> 2> from test_table
> 3>
> COLUMN_A COLUMN_B
> ---------- ----------
> 1 4
> 2 6
> 3 8
> 3 rows selected.
>
>
> --
> Please see the official ORACLE-L FAQ:
> http://www.orafaq.com
> --
> Author: Bill Buchan
> INET: wbuchan_at_uk.intasys.com
>
> Fat City Network Services -- (858) 538-5051 FAX:
> (858) 538-5051
> San Diego, California -- Public Internet
> access / Mailing Lists
>
> To REMOVE yourself from this mailing list, send an
> E-Mail message
> to: ListGuru_at_fatcity.com (note EXACT spelling of
> 'ListGuru') and in
> the message BODY, include a line containing: UNSUB
> ORACLE-L
> (or the name of mailing list you want to be removed
> from). You may
> also send the HELP command for other information
> (like subscribing).
Do You Yahoo!?
NEW from Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
http://geocities.yahoo.com/ps/info1
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Viktor
INET: stant_98_at_yahoo.com
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
San Diego, California -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).
Received on Fri Oct 05 2001 - 12:31:34 CDT