Twoje zapytanie wydaje mi się w porządku. Właśnie dodałem alias tabeli. Twoje zapytanie zaktualizuje wszystkie rekordy w tabeli 1. Jaki błąd pojawia się...??
Sugestie,
a) Jeśli nie chcesz aktualizować wszystkich rekordów, dodaj klauzulę WHERE w zapytaniu, aby uniknąć aktualizacji wszystkich rekordów...
b) Jeśli otrzymujesz (ORA-01427:jednowierszowe podzapytanie zwraca więcej niż jeden wiersz), oznacza to, że skorelowane podzapytanie (w nawiasach) nie ma jakiegoś warunku, aby pobrać tylko 1 wiersz na epcclass_id.
update table1 Pr
set Pr.code = (select t2.class_attr_value
from table2 t2
where t2.class_attr_name = 'sample'
and t2.epclass_id = Pr.epcclass_id
);