2016-12-08 3 views
1

В сервере Microsoft SQL я мог бы сделать что-то вроде этого:Postgresql сохраняется обратный порядок выбора результирующего набора

create procedure my_procedure @argument1 int, @argument2 int 
as 
    select * 
    from my_table 
    where ID > @argument1 and ID < @argument2 

И что бы вернуть мне таблицу со всеми столбцами из my_table.

Ближайший вещь, что мне удалось сделать в PostgreSQL является:

create or replace function 
    get_test() 
returns setof record 
as 
$$ select * from my_table $$ 
language sql 

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

create or replace function 
    get_agent_summary() 
returns table (
    column1 type, column2 type, ... 
) 
as 
$$ 
begin 
    return query select col1, col2, ... from my_existing_table; 
... 

и это боль для поддержания.

Итак, как я могу легко вернуть набор результатов без переопределения определения каждого столбца из таблицы, которую я хочу вернуть?

+0

и вопрос есть? –

+0

@VaoTsun Как сделать что-то из Microsoft SQL в PostgreSQL – Reygoch

ответ

4

В Postgres таблица автоматически определяет соответствующий тип:

create or replace function select_my_table(argument1 int, argument2 int) 
returns setof my_table language sql as $$ 
    select * 
    from my_table 
    where id > argument1 and id < argument2; 
$$; 

select * from select_my_table(0, 2); 

Синтаксис является более многословен, чем в MS SQL Server, потому что вы можете создавать функции в одном из нескольких языков и функций могут быть перегружены.

Смежные вопросы