powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вернуть таблицу из функции
2 сообщений из 2, страница 1 из 1
Вернуть таблицу из функции
    #39289909
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая функция

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create table t(id serial primary key, 
name text, description text);

insert into t(name, description)
values ('vasya', 'vasya desc');
insert into t(name, description)
values ('petya', 'petya desc');


CREATE OR REPLACE FUNCTION get_t(
    _id INTEGER
)
RETURNS TABLE
(id INTEGER, 
name text, 
description text)
AS $BODY$
begin
	RETURN QUERY SELECT id, name, description from t;
end
$BODY$ language plpgsql;

select get_t(1);





Её вызов дает ошибку

авторERROR: column reference "id" is ambiguous
LINE 1: SELECT id, name, description from t
^
DETAIL: It could refer to either a PL/pgSQL variable or a table column.
QUERY: SELECT id, name, description from t
CONTEXT: PL/pgSQL function get_t(integer) line 3 at RETURN QUERY



Я так понимаю, не нравится совпадение имен в описанной возвращаемой таблице и в запросе.
Можно переименовать выходные поля, но это не проходит в данном случае.

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

Нужно указать имя таблицы или алиас, тогда pg не будет путаться, к чему именно вы обращаетесь.
Код: sql
1.
RETURN QUERY SELECT t.id, t.name, t.description from t;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вернуть таблицу из функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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