Updating Rows with Records
The PL/SQL extension to the SQL UPDATE
statement lets you update one or more table rows with a record.
The record must represent a row of the table. For more information, see "UPDATE Statement Extensions".
For restrictions on updating table rows with a record, see "Restrictions on Record Inserts and Updates".
To efficiently update a set of rows with a collection of records, put the UPDATE
statement inside a FORALL
statement. For information about the FORALL
statement, see "FORALL Statement".
Example 6-61 Updating Rows with Record
This example updates the first three weeks of the table schedule
(defined in Example 6-60) by putting the new values in a record and updating the first three rows of the table with that record.
DECLARE default_week schedule%ROWTYPE; BEGIN default_week.Mon := 'Day Off'; default_week.Tue := '0900-1800'; default_week.Wed := '0900-1800'; default_week.Thu := '0900-1800'; default_week.Fri := '0900-1800'; default_week.Sat := '0900-1800'; default_week.Sun := 'Day Off'; FOR i IN 1..3 LOOP default_week.week := i; UPDATE schedule SET ROW = default_week WHERE week = i; END LOOP; END; / SELECT * FROM schedule;
Result:
WEEK MON TUE WED THU FRI SAT SUN ---- --------- --------- --------- --------- --------- --------- --------- 1 Day Off 0900-1800 0900-1800 0900-1800 0900-1800 0900-1800 Day Off 2 Day Off 0900-1800 0900-1800 0900-1800 0900-1800 0900-1800 Day Off 3 Day Off 0900-1800 0900-1800 0900-1800 0900-1800 0900-1800 Day Off 4 0800-1700 0800-1700 0800-1700 0800-1700 0800-1700 Day Off Day Off 5 0800-1700 0800-1700 0800-1700 0800-1700 0800-1700 Day Off Day Off 6 0800-1700 0800-1700 0800-1700 0800-1700 0800-1700 Day Off Day Off