【问题标题】:Postgresql: Return Temp Table From a Stored ProcedurePostgresql:从存储过程返回临时表
【发布时间】:2016-10-06 18:33:01
【问题描述】:

我想从存储过程返回存储在临时表中的查询结果。我不确定最后的陈述应该是什么。任何帮助都会得到帮助:

CREATE OR REPLACE FUNCTION public.get_generic_info(
    IN in_app_id character varying,
    IN key_id uuid)
RETURNS TABLE(info text, last_update timestamp with time zone) AS
$BODY$  
BEGIN
    CREATE TEMP TABLE result AS
        SELECT  generic_info.info::text, generic_info.last_update FROM 
                generic_info 
        WHERE generic_info.app_id = in_app_id AND generic_info.id = key_id;

    -- some data manipulations based on 'result' rows       
    RETURN ???????;
END;

【问题讨论】:

    标签: sql postgresql plpgsql postgresql-9.1


    【解决方案1】:

    你最后的陈述是这样的

    RETURN QUERY 
         SELECT  result.info::text, result.last_update FROM 
          result;
    

    如果你不使用TEMP表做其他事情,根本不需要创建临时表..你可以直接做

    RETURN QUERY
    SELECT  generic_info.info::text, generic_info.last_update FROM 
                    generic_info 
            WHERE generic_info.app_id = in_app_id AND generic_info.id = key_id;
    

    【讨论】:

    • 完美。顺便说一句,在第一个解决方案中,列列表中的表名应该是“结果”而不是“通用信息”。
    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多