powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как получить результат select в хранимой процедуре?
4 сообщений из 4, страница 1 из 1
как получить результат select в хранимой процедуре?
    #39627686
sqldevelop18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хранимая процедура

CREATE OR REPLACE FUNCTION test1(user_id integer) RETURNS TABLE( firstname character varying) AS $$
BEGIN
RETURN QUERY
SELECT 'test' as firstname ;
END;
$$ LANGUAGE plpgsql;


при вызове

select * from test1(1)

дает ошибку

ERROR: structure of query does not match function result type
DETAIL: Returned type unknown does not match expected type character varying in column 1.
CONTEXT: PL/pgSQL function test1(integer) line 3 at RETURN QUERY. (Line 1)


что исправить и как?
...
Рейтинг: 0 / 0
как получить результат select в хранимой процедуре?
    #39627689
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqldevelop18,

вы выбрали слишком простой пример. Да, пример может быть слишком простым. В текущем виде парсер не понимает, какого типа должно быть 'test' (оно считается unknown псевдотипом). То что у него есть единственная подсказка - выходной тип, к сожалению, не помогает.

Поэтому придётся руками привести к нужному:
Код: sql
1.
2.
RETURN QUERY
 SELECT 'test'::varchar as firstname ;



Если в более сложном варианте вы попробуете читать с таблицы - там уже найдётся информация о типах данных.

PS: кстати, если в хранимке только один запрос - выгоднее использовать language sql.
...
Рейтинг: 0 / 0
как получить результат select в хранимой процедуре?
    #39627814
sqldevelop18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

благодарю
несколько вложенных sql
что тогда лучше?
...
Рейтинг: 0 / 0
как получить результат select в хранимой процедуре?
    #39633167
bff7755a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MelkijPS: кстати, если в хранимке только один запрос - выгоднее использовать language sql.
Это, как минимум, спорное утверждение. Например потому, что plpgsql кеширует планы запросов и иногда выгоднее для частых запросов использовать процедуры на plpgsql именно по этой причине.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как получить результат select в хранимой процедуре?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]