Задать вопрос
@borjd

Postgres выдаёт unknown для типа char — в чём ошибка?

Написал функцию в Postgres. Запускаю её и получаю ошибку:

ERROR:  function testfunc3(integer, timestamp with time zone, bit, integer, unknown, integer) does not exist
������ 1: select testboris3(2, now(), B'0', 789, '2', 2);

Ругается, что тип предпоследнего параметра не найден. Если ставлю предпоследний параметр как просто 2, без кавычек, то он уже определяет тип корректно. Как передать в функцию значение varchar?

Запускаю функцию так:

select testfunc3(2, now(), B'0', 789, '2', 2);

Что я делаю не так?
  • Вопрос задан
  • 68 просмотров
Подписаться 2 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Hi-TECH Academy
    Администрирование PostgreSQL 16. Базовый курс
    3 дня
    Далее
  • OTUS
    PostgreSQL. Advanced
    4 месяца
    Далее
  • Учебный центр IBS
    QPT PostgreSQL 16. Оптимизация запросов
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Литерал '2' необязательно имеет тип CHAR. Он ведь имеет полное право быть, к примеру, BYTEA, верно?

Используйте явное указание типа в вызове:
select testboris3(2, now(), B'0', 789, '2'::CHAR, 2);


Если ставлю предпоследний параметр как просто 2, без кавычек, то он уже определяет тип корректно.

Не определяет, а преобразует в тип, определяемый шаблоном функции.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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