Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> RE: full usefullness of CURRENT OF ???

RE: full usefullness of CURRENT OF ???

From: Chris Stephens <ChrisStephens_at_affina.com>
Date: Fri, 11 Jul 2003 11:14:24 -0800
Message-ID: <F001.005C4628.20030711111424@fatcity.com>


I believe (I could be totally wrong here) the reason for the CURRENT OF is both for performance and consistency.  

The second example has to run the update statement seperately. CURRENT OF can go directly to the row(s) affected. CURRENT OF still has to modify each block header in the table to lock which is a small performance hit. To prevent that you could update by rowid and avoid the header updates.  

Also, the CURRENT OF locks the table so that no one can modify (or even read) it while the transaction is taking place. This guarantees nothing is changing between retrieving values from the cursor and updating the table based on those values.  

-----Original Message-----
Sent: Friday, July 11, 2003 1:54 PM
To: Multiple recipients of list ORACLE-L  

Could anyone give us an idea as to the full usefullness

of CURRENT OF? Here are my two separate examples:    

/* 1 this one has a CURRENT OF */  

DECLARE       CURSOR EmpCursor IS

            SELECT *             FROM Emp

            FOR UPDATE;   BEGIN      FOR EmpRec IN EmpCursor LOOP  

         UPDATE EMP          SET SALARY = SALARY * 1.08          WHERE CURRENT OF EmpCursor  

     END LOOP;   END;     /* 2 same as above, except without the CURRENT OF */

DECLARE      CURSOR EmpCursor IS

           SELECT *            FROM Emp

           FOR UPDATE;   BEGIN      FOR EmpRec IN EmpCursor LOOP  

         UPDATE EMP          SET SALARY = SALARY * 1.08          WHERE EMP_ID = EmpRec.Emp_ID;  

     END LOOP;   END; /    

Is one more efficient than the other? If I could have done

business without the CURRENT OF, then why did oracle made

it available?  

thx

maa  

--

Please see the official ORACLE-L FAQ: http://www.orafaq.net

--

Author: Maryann Atkinson

  INET: maryann_30_at_yahoo.com  

Fat City Network Services -- 858-538-5051 http://www.fatcity.com

San Diego, California -- Mailing list and web hosting services


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).

--

Please see the official ORACLE-L FAQ: http://www.orafaq.net
--

Author: Chris Stephens
  INET: ChrisStephens_at_affina.com

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
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 Jul 11 2003 - 14:14:24 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US