@Korifa

Где ошибка в запросе?

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';

spoiler
63e2149fa63f8765685263.png
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Khamzabek
Ошибка в запросе заключается в неправильном форматировании строкового литерала. Во-первых, не хватает символа "||" перед строкой "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;';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы