Это слишком долго для комментария.
Вы пытаетесь воспроизвести функциональность базы данных в хранимой процедуре. Это плохая идея. Одним из них является то, что из-за условий гонки вы не можете сделать так же хорошо, как база данных. Во-вторых, вы можете получить этот код правильно, но другой код может обновить / вставить / удалить строки и вызвать проблемы.
Две вещи, которые вы хотите, это ограничение внешнего ключа и ограничение уникальности:
alter table ProductPrices add constraint fk_productprices_sku
foreign key (sku) reference products(sku);
alter table ProductPrices add constraint unq_productprices_sku
unique (sku);
Вы можете зафиксировать ошибки, чтобы переименовать их. Это кажется лишним усилием (на мой взгляд). Просто дайте ограничениям значимые имена и дайте базе данных выполнить свою работу.