У меня есть запрос к базе данных oracle. Этот запрос содержит функцию decode, в коде это выглядит следующим образом:
decode(repair_2.class_tne, '-1', repair_2.all_prev, 0)
В postgresql такой функции, как decode нет, поэтому я переопределил эту функцию:
create or replace function decode(expression_1 varchar,search_1 anyelement,result_1 bigint,default_1 integer)
returns varchar language sql as $$
select
case expression_1
when search_1::varchar then result_1::varchar
else default_1::varchar
end
$$;
Но если делать такой запрос
decode(repair_2.class_tne, '-1', repair_2.all_prev, 0)
, то будет ошибка "could not determine polymorphic type because input has type unknown", и мне приходится приводить '-1' к varchar:
decode(repair_2.class_tne, '-1'::character varying, repair_2.all_prev, 0)
Но дело в том, что подобных запросов еще очень много, и мне не хочется для каждого вручную добавлять оператор присваивания, можно ли как-нибудь переопределить функцию так, чтобы этого делать не приходилось?