Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Mailing Lists -> Oracle-L -> how to capture the error when RID value not in the table (pl/sql question)
I have the following code in a pl/sql procedure (oracle 9i), which is called
a lot.
SAVEPOINT sp123;
UPDATE Customers
SET Name = p_name
WHERE RID = p_CustomerRID;
IF SQL%ROWCOUNT > 1 THEN
ROLLBACK WORK TO SAVEPOINT sp123; RaiseError.TooManyUpdates('Customers'); ELSIF SQL%ROWCOUNT = 0 THEN RaiseError.NoRecordUpdated('Customers');END IF; The code works fine now. But I would to change the update sql to
UPDATE Customers SET Name = p_name WHERE RID = p_CustomerRID AND Name != p_name;
to avoid unnecessary redo writing. But if I check SQL%ROWCOUNT for this new query and get 0, I would not know if it is due to a non-exist RID (Which I want to capture this situation) or simply p_name already exists for that RID. Is there a better way of doing this kind of thing, minimize redo writing and capture the error the same time with only one sql run?
TIA. Guang
-- http://www.freelists.org/webpage/oracle-lReceived on Wed Feb 23 2005 - 13:22:17 CST