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

Как устранить ошибку «operator does not exist: integer = integer[]»?

Решил сделать функцию, подсчитывающую кол-во устройств в таблице device по переданному в функцию массиву идентификаторов, но при создании функции выходит ошибка:

ERROR:  operator does not exist: integer = integer[]
LINE 3:  WHERE device.id IN (ids)

HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.

Запрос:

CREATE OR REPLACE FUNCTION get_count(VARIADIC ids integer[]) RETURNS int AS $$
	SELECT COUNT(*) FROM device 
	WHERE device.id IN (ids)
$$ LANGUAGE SQL
  • Вопрос задан
  • 1799 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
Решения вопроса 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
ANY вместо IN?
CREATE OR REPLACE FUNCTION get_count(VARIADIC ids integer[]) RETURNS int AS $$
	SELECT COUNT(*) FROM device 
	-- WHERE device.id IN (ids)
	WHERE device.id = ANY (ids)
$$ LANGUAGE SQL
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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