I had a situation to update or insert a table on the basis of source table. The Source and the destination tables were same except that the source table had some extra columns to indicate the operation type Insert update or delete to perform when inserting or updating the data.
I thought of using MERGE which is one that fastest way of doing it. After spending a few hours in came to now that i cannot use MERGE. As my source table can have one or more entries for pk_row. Which merge cannot handle and give ORA-30926: unable to get a stable set of rows in the source tables
for x in ( select * from source )
I thought of using MERGE which is one that fastest way of doing it. After spending a few hours in came to now that i cannot use MERGE. As my source table can have one or more entries for pk_row. Which merge cannot handle and give ORA-30926: unable to get a stable set of rows in the source tables
Actually i thought merge statement is some thing like Select source table....
update destination table....
if sql%rowcount 0 then
insert ....
end if;
But actually it is
loop
if record exists
then
if record hasn't been modified by us yet
then
update it
else
fail
end if
else
insert it
end if
end loop
No comments:
Post a Comment