【问题标题】:Return result of query from function in postgresql从 postgresql 中的函数返回查询结果
【发布时间】:2016-06-10 00:51:47
【问题描述】:

我有一个查询,例如“从 table1 中选择 id、field1、field2”(id 和 field1 是整数,field2 是 varchar),我需要从函数调用查询并按原样返回结果。

CREATE OR REPLACE FUNCTION get_all_record()
  RETURNS TABLE(id integer , field2 varchar(20)) AS
$$                                                  
BEGIN
    EXECUTE 'SELECT table1.id, table1.field2 FROM table1' INTO id, field2;
    RETURN;
END;
$$
  LANGUAGE plpgsql

但此解决方案仅在一个字段中返回一条记录。我该如何纠正?

【问题讨论】:

  • 您需要使用RETURN QUERY 而不是EXECUTE '...' INTO
  • JNevill,但如果我使用 RETURN QUERY 而不是 EXECUTE '...' INTO 函数返回一个字段中的所有记录,如文本“(value1,value2)”

标签: postgresql


【解决方案1】:

试试这个:

CREATE OR REPLACE FUNCTION get_all_record(OUT id integer, OUT field2 varchar(20))
RETURNS SETOF record
AS $$
BEGIN
    RETURN QUERY SELECT table1.id, table1.field2 FROM tiers;
END;
$$
LANGUAGE plpgsql;

【讨论】:

  • 我需要没有参数的函数
  • @ViKo 没有参数返回行集的函数称为view ;) 说真的out 参数只是提供结果结构,你应该像select * from get_all_record() 一样使用这个函数而不指定参数。 @PeterEisentraut 您的示例可以使用language sql 而不是plpgsql 进行简化。
猜你喜欢
  • 2016-01-12
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 2017-09-10
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多