If your update is:
update table_a
when the source is:
table_a cqp,
table_b cqr,
table_c cq,
table_d co
Then this suggests either
1) the code is wrong, because you'll be getting multiple rows for each 'table_a' row, OR
2) table_a is the lowest level in the referential integrity hierarchy.
Assuming (2), this probably means you have an opportunity for a key-preserved update, ie
update
(
select
cqp . quote_revision_id ,
cqp . hpp_part ,
cqp . prod_type_abc ,
cqp . prod_class ,
co . opportunity_id ,
co . source_products ,
cqp . cost_used_for_quote ,
cqp . item_tag ,
cqp . quote_part_id
from
table_a cqp ,
table_b cqr ,
table_c cq ,
table_d co
where
cqp . quote_revision_id = cqr . revision_id
and cqr . quote_id = cq . quote_id
and co . opportunity_id = cq . opportunity_id
and cqp . queue_id is null
and cqr . quote_revision = l_quote_revision
and cq . quote_number = l_quote_number
)
)
set ...