How to update table1 field by using other table and function
There are multiple ways to do it in Oracle.  Right of the bat I can think about two. 


Straightforward, not Oracle specific (assuming shop_code is unique in table1) 

update TABLE2 t2 set SHOP_NAME = 
(
  SELECT GET_shop_name(t1.regitry_id)  
  FROM TABLE1 T1 
  WHERE t2.shop_code = t1.shop_code
);

Oracle specific syntax(requires inline view to be key-preserved - if shop_code is not a PK column in both tables you will very likely get "SQL Error: ORA-01779: cannot modify a column which maps to a non key-preserved table" ) 

UPDATE
 (
    SELECT GET_shop_name(t1.regitry_id) AS new_name,
           t2.shop_code, t2.shop_name
    FROM TABLE2 t2 
    INNER JOIN t1 ON (t2.shop_code = t1.shop_code)
  )
SET shop_name = new_name;