Функции Postgres - PullRequest
       18

Функции Postgres

2 голосов
/ 12 апреля 2009

Мне нужно сделать запрос выбора с объединениями. Это должно быть написано в функции. Мой подход не сработал:

CREATE OR REPLACE FUNCTION test2()
RETURNS SETOF record AS'
DECLARE
    r record;
BEGIN
    for r in SELECT * FROM messages_wall INNER JOIN location ON
         messages_wall.id = location.id
         loop
    return next r;
    end loop;
end; '
LANGUAGE 'plpgsql'

ОШИБКА: список определения столбца требуется для функций, возвращающих «запись»

Я должен вызвать эту функцию из приложения .net. Как мне поступить?

Ответы [ 3 ]

3 голосов
/ 22 июня 2011

SELECT * FROM test2() AS tabletest2 (id integer, name text);, если вы действительно хотите использовать функцию, но в этом случае вид лучше

2 голосов
/ 12 апреля 2009

Вместо того, чтобы присоединять таблицу к вашей функции, вы можете использовать view.

ВОЗВРАТ НАСТРОЙКИ your_view ;

Возможно, вам также нужно определить r с соответствующим типом данных:

r your_view%ROWTYPE;

или

Вы должны указать поля и тип данных.

SELECT * FROM test2() AS fields_1 as INTEGER, fields_2 AS ... ;
1 голос
/ 13 апреля 2009

Для вашего примера обертка объединения в функцию (PL / pgSQL) не нужна. Как упоминал Люк М, вид будет самым простым и быстрым.

Если вы настаиваете на наличии функции, хотя вашим следующим выбором должна быть функция SQL - дополнительная информация здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...