Votre requête me semble correcte, je viens d'ajouter l'alias de table. Votre requête mettra à jour tous les enregistrements de table1. Quelle erreur obtenez-vous... ? ?
Suggestions,
a) Sauf si vous souhaitez mettre à jour tous les enregistrements, ajoutez une clause where dans la requête pour éviter de mettre à jour tous les enregistrements...
b) Si vous obtenez (ORA-01427 :la sous-requête à une seule ligne renvoie plus d'une ligne), cela signifie que la sous-requête corrélée (entre parenthèses) manque une condition pour qu'elle ne récupère qu'une seule ligne par 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
);