Skip to Content
Oracle PL/SQL Best Practices
book

Oracle PL/SQL Best Practices

by Steven Feuerstein
April 2001
Intermediate to advanced
204 pages
5h 10m
English
O'Reilly Media, Inc.
Content preview from Oracle PL/SQL Best Practices

Name

SQL-11: Specify columns to be updated in a SELECT FOR UPDATE statement.

Synopsis

Use the SELECT FOR UPDATE statement to request that locks be placed on all rows identified by the query. This is done when you know you will change some or all of those rows, and you don’t want another session to change them out from under you.

Specify the columns to be updated so that (a) anyone reading the code knows the intentions of your program, and (b) if your query contains a join of more than one table, Oracle will lock only the rows in those tables that contain any of the specified columns.

Example

The following code sets the favorite ice cream flavor of the Feuerstein family to ROCKY ROAD, but doesn’t lock any rows in the person table:

DECLARE
   CURSOR change_prefs_cur IS
      SELECT PER.name, PREF.name flavor
        FROM person PER, preference PREF
       WHERE PER.name = PREF.person_name
         AND PREF.type = 'ICE CREAM'
         FOR UPDATE OF PREF.name;
BEGIN
   FOR rec IN change_prefs_cur
   LOOP
      IF rec.name LIKE 'FEUERSTEIN%'
      THEN
         UPDATE preference SET name = 'ROCKY ROAD'
          WHERE CURRENT OF change_prefs_cur;
      END IF;
   END LOOP;
END;
/

Benefits

You keep to a minimum the number of locks placed on rows in tables.

You self-document the behavior of your code, which is important for those who come to your code later in its life to maintain it.

Resources

forupdate.sql : Contains the code for the example in this section.

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Oracle PL/SQL for DBAs

Oracle PL/SQL for DBAs

Arup Nanda, Steven Feuerstein
Resilient Oracle PL/SQL

Resilient Oracle PL/SQL

Stephen B. Morris
Oracle PL/SQL

Oracle PL/SQL

Lewis Cunningham

Publisher Resources

ISBN: 0596001215Errata Page