【问题标题】:plpgsql: create function with dynamic setof return typeplpgsql:创建具有动态 setof 返回类型的函数
【发布时间】:2012-08-21 22:45:19
【问题描述】:

我正在尝试创建一个返回动态数据类型集的函数。数据类型都是事先创建好的,可以作为第四个变量调用。

CREATE OR REPLACE FUNCTION gethistoryrecord(text, text, text, text)
RETURNS setof $4 AS
$BODY$
declare
    r record;
begin
    for r in EXECUTE 'SELECT * FROM ' || $1 || ' where ref_id = ' || $2 || ' and create_date < ' || quote_literal($3) || '::timestamp and (archive_date is null or archive_date >= ' || quote_literal($3) || '::timestamp)' loop
        return next r;
    end loop;
    return;
end
$BODY$
  LANGUAGE plpgsql;

我会像这样调用函数

select * from gethistoryrecord('view_all_history','3540','2012-08-21 17:43:39.855852','holder_name')

是否有可能我不必声明输出并且不会收到错误

返回“记录”的函数需要列定义列表

【问题讨论】:

    标签: function return plpgsql


    【解决方案1】:

    你可以指定输出记录,但它可能是你想要的。 PostgreSQL 有相对严格的类型系统,不可能写太通用的 SRF 函数。

    【讨论】:

    • 是的,我想到了,但还是谢谢!必须按照输出的定义去!
    猜你喜欢
    • 2017-05-08
    • 2021-06-02
    • 2012-08-18
    • 2023-02-13
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多