【问题标题】:Postgresql stored procedure return select result setPostgresql 存储过程返回选择结果集
【发布时间】:2017-04-23 10:54:36
【问题描述】:

在 Microsoft SQL Server 中,我可以这样做:

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;
...

维护起来很痛苦。

那么,如何在不重新定义要返回的表中的每一列的情况下轻松返回结果集?

【问题讨论】:

  • 问题是?
  • @VaoTsun 如何在 PostgreSQL 中通过 Microsoft SQL 执行此操作

标签: sql-server postgresql resultset


【解决方案1】:

在 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 更冗长,因为您可以使用多种语言中的一种创建函数,并且函数可能会重载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    相关资源
    最近更新 更多