У меня есть блок выполнения внутри хранимой процедуры, и я динамически выполняю запрос:
execute 'create table raw_mine.financial_multicase_xwalk_' || target_date || '
as
select distinct
a.cvr_mnth_dt
, a.filler_string_10
, a.alt_prsn_id
, a.member_id
from raw_mine.rstag_mine_TO_CGT_MBRSHP_' || target_date || ' a
left join
raw_mine.rstag_mine_TO_CGT_FIN_' || target_date || ' b
on a.filler_string_10 = b.filler_string_10
and a.member_id = b.member_id
and left ( a.cvr_mnth_dt, 6) = left ( b.cvr_mnth_dt, 6)
left join
raw_mine.rstag_mine_TO_CGT_FIN_' || target_date || ' cp
on a.filler_string_10 = cp.filler_string_10
and a.alt_prsn_id = cp.alt_prsn_id
and left ( a.cvr_mnth_dt, 6) = left ( cp.cvr_mnth_dt, 6)
left join
raw_mine.member_xwalk_dulality_' || target_date || ' c
on a.alt_prsn_id = c.alt_prsn_id
and left ( a.cvr_mnth_dt, 6) = left ( replace ( c.cvr_mnth_dt, '-', ''), 6)
where nullif ( c.alt_prsn_id, '') is null
and cp.alt_prsn_id is not null
and cp.member_id != a.member_id;';
все столбцы являются varchars, а target_date — входной параметр процедуры, и я получаю сообщение об ошибке
Ошибка SQL [42725]: ОШИБКА: оператор не уникален: «неизвестно» — «неизвестно»
Подсказка: Не удалось выбрать лучшего кандидата-оператора. Возможно, вам придется добавить явное приведение типов.
Есть идеи, как это решить?
Этот запрос работает при выполнении вне процедуры.


Похоже, вы забыли экранировать одинарные кавычки, определяющие строки в этих строках:
and left ( a.cvr_mnth_dt, 6) = left ( replace ( c.cvr_mnth_dt, '-', ''), 6)
where nullif ( c.alt_prsn_id, '') is null
Вы, вероятно, захотите
and left ( a.cvr_mnth_dt, 6) = left ( replace ( c.cvr_mnth_dt, ''-'', ''''), 6)
where nullif ( c.alt_prsn_id, '''') is null