Din fråga verkar okej för mig. Jag har precis lagt till tabellalias. Din fråga kommer att uppdatera alla poster i tabell1. Vilket fel får du...??
Förslag,
a) Om det inte är avsikten att du vill uppdatera alla poster, lägg till en where-klausul i frågan för att undvika att uppdatera alla poster...
b) Om du får (ORA-01427:enkelrads underfråga returnerar mer än en rad) betyder det att en korrelerad underfråga (inom parentes) saknar något villkor för att få den att bara hämta 1 rad per 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
);