Функция postgresql — как вернуть набор данных строк

Вопрос:

Я пытаюсь создать функцию postgresql, которая возвращает более одной строки. Вот как выглядит код:

CREATE OR REPLACE FUNCTION getallwidgets()
RETURNS SETOF widgets AS
$BODY$
SELECT * FROM widgets;
$BODY$
LANGUAGE sql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION getallwidgets()
OWNER TO postgres;

Когда я тестирую этот код с помощью pgadmin3, я получаю ОДИН столбец данных, причем каждое поле разделяется запятыми. Мне интересно, как получить отдельные поля в списке, так что, когда я перебираю набор данных в своем коде, который вызывает хранимый процесс, я могу ссылаться на каждое поле по имени столбца.

Благодарю.

ИЗМЕНИТЬ 1

В pgadmin3, когда я запускаю скрипт, на панели вывода я получаю следующие данные в столбце ОДИН:

(1, "widget1","this is my description", 1)
(2, "another widget","description2", 3)

Другими словами, я получаю две строки с указанными выше данными в одном столбце. Я ожидал:

id      name             description                    user_id
1       "widget1"        "this is my description"         1
2       "another widget" "description2"                   3

Лучший ответ:

Вы можете ссылаться на имена столбцов (если вы их знаете) из вывода. Например, если у вас есть столбцы с именем col1, col2, col3 в ваших таблицах виджетов, вы можете указать:

SELECT col1, col2, col3
FROM getallwidgets();

Это то, что вам нужно?

Оцените статью
TechArks.Ru
Добавить комментарий