Ошибка в запросе заключается в неправильном форматировании строкового литерала. Во-первых, не хватает символа "||" перед строкой "from", так как он должен быть объединен со строкой "select". Во-вторых, также не хватает символа "||" перед строкой "on", так как он должен быть объединен со строкой "join". В-третьих, в строке "on (t.' v_trg_pk" не хватает символа "||" перед переменной "v_trg_pk". Кроме того, необходимо добавить символы ";" в конце запроса.
Исправленный запрос:
v_sql := 'merge into ' || in_trg_table || ' t'
|| ' using (select s.address, s.city, m.trg_pk_id'
|| ' from ' || v_src_table || ' s join ' || v_map_table || ' m'
|| ' on m.src_pk_id = s.cust_id ) sc'
|| ' on (t.' || v_trg_pk || ' = sc.trg_pk_id)'
|| ' when matched then update set '
|| 't.ADDRESS=sc.ADDRESS,t.CITY=sc.CITY;';