Я пытаюсь создать функцию с результатом конкатенированного значения.POSTGRESQL: Результат функции с значением Concat
смотри ниже:
CREATE OR REPLACE FUNCTION select_name()
RETURNS TABLE(name text) AS
$BODY$
BEGIN
RETURN QUERY
select
cast(first_name as text) ||' ' || cast(middle_name as text) ||' ' || cast(last_name as text) as name
from table_name;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
Однако при запросе
select * from select_name();
он показывает сообщение об ошибке:
ERROR: relation "select_name" does not exist
LINE 8: select * from select_name
^
********** Error **********
ERROR: relation "select_name" does not exist
SQL state: 42P01
Character: 159
Я застрял здесь. Пожалуйста, помогите.
Ваша функция работает для меня ... Сообщение об ошибке выглядит так, как в запросе были указаны круглые скобки. Я также подозрительно отношусь к 'LINE 8' и' Character: 159'. Возможно, вы опустили некоторые детали, которые могли бы прояснить проблему. Кстати: '' firstname '|| NULL NULL'. –
Я согласен с Laurenz: кажется, вы забыли использовать '()' и просто запустили 'select * from select_name'. Unrelated, но: ваше выражение в функции может быть упрощено для 'select concat_ws ('', first_name, middle_name, last_name) как name', чтобы правильно обрабатывать значения« null »(плюс: вам не нужен PL/pgSQL для этого , простой SQL-функции будет достаточно) –
Спасибо всем. :) Я просмотрел его снова и сделал некоторые корректировки, и это сработало! Я использовал это: 'cast (first_name || '' || middle_name || '' || last_name как текст) как name' – fLen