CREATE OR REPLACE FUNCTION public.get_locations(
location_word varchar(50)
)
RETURNS TABLE
(
country varchar(50),
city varchar(50)
)
AS $$
DECLARE
location_word_ varchar(50);
BEGIN
location_word_:=concat(location_word, '%');
RETURN QUERY EXECUTE format(' (SELECT c.country, ''::varchar(50) as city FROM webuser.country c
WHERE lower(c.country) LIKE %L LIMIT 1)
UNION
(SELECT c.country,ci.city FROM webuser.country c
JOIN webuser.city ci ON c.country_id=ci.country_id
WHERE lower(ci.city) LIKE %L LIMIT 4)',
location_word_,
location_word_ ) ;
END
$$ language PLPGSQL STABLE;
Это ошибка, которую я получаю;
- ОШИБКА: синтаксическая ошибка в или около "%"
- СТРОКА 2: ГДЕ ниже (c.country) LIKE 'a%' LIMIT 1)
Почему я получаю эту ошибку?
ИЗМЕНИТЬ
Когда я только что заменил ''::varchar(50)
на ''''::varchar(50)
, все заработало!
%L
— это опечатка вместо'%L'
в кавычках. Могут быть и другие проблемы, но это должно исправить ошибку, о которой вы сообщили. - person Tim Biegeleisen   schedule 15.09.2016