Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вернуть таблицу из функции / 2 сообщений из 2, страница 1 из 1
10.08.2016, 17:42
    #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
10.08.2016, 18:01
    #39289922
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вернуть таблицу из функции
Ролг Хупин,

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


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