Переместить аргументы из предложения WHERE в вызов функции (PostgreSQL) - PullRequest
0 голосов
/ 26 января 2012

Я хотел бы знать, есть ли способ переместить аргументы из предложения WHERE в вызов функции:

Например:

SELECT * FROM table1
WHERE a1 = ‘abc’ AND a2 = ‘def’;

Но я бы хотел, чтобы запрос был переписан так:

SELECT * FROM func1('a1=abc','b1=def');

Неважно, что представляет собой объект table1, но я думаю, это может быть ВИД. В любом случае я хотел бы предоставить пользователям интерфейс, подобный показанному выше, посредством которого вызов функции будет скрыт.

1 Ответ

1 голос
/ 26 января 2012

Вы можете создать функцию возврата набора, которую можно вызывать так:

SELECT *
FROM func1('abc', 'def');

Функция выглядит примерно так:

create or replace function func1(text, text)
  returns setof table1
as 
$body$
   SELECT * FROM table1 WHERE a1 = $1 and a2 = $2
$body$ 
LANGUAGE SQL;

Подробнее в руководстве:
http://www.postgresql.org/docs/current/static/xfunc-sql.html

Вы также можете добавить предложение where к select:

SELECT *
FROM func1('abc', 'def')
WHERE some_col > 100;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...