У меня есть таблица «Контакты» с кучей строк и столбцов, которая выглядит примерно так:
ID |FirstName|LastName|Addr1|Addr2 |Phone |...|
1 |Anna |Johnson |123 |Fake street|12345678|...|
2 |Bob |Smith |234 |Foo Ave |23456789|...|
Теперь Анна переехала, и я хочу обновить ее адрес.Моя система выводит строку с типом строки «Контакты», где PK и обновленные столбцы имеют значение, а все остальное равно нулю.
declare
update_row Contacts%rowtype;
begin
update_row := (1,null,null,987,Bar Street,null,null);
Теперь я хочу сохранить исходную строку «Контакты» и просто обновитьзначения, которые не являются нулевыми в update_row.По сути, я хочу сделать следующее:
if update_row.FirstName is not null then Contacts.FirstName := update_row.FirstName;
if update_row.LastName is not null then Contacts.LastName := update_row.LastName;
if update_row.Addr1 is not null then Contacts.Addr1 := update_row.Addr1;
if update_row.Addr2 is not null then Contacts.Addr2 := update_row.Addr2;
...
или что-то в этом роде, но без необходимости явно проверять каждое значение столбца.Есть ли решение, которое выглядит примерно так:
merge update_row into Contacts where update_row is not null and ID = 1