【问题标题】:PostgreSQL: a query and a stored function based on the query return different numbers of recordsPostgreSQL:一个查询和一个基于查询的存储函数返回不同数量的记录
【发布时间】:2014-08-22 21:06:06
【问题描述】:

我有一个查询,但由于有很多常量,我决定将此查询包装在一个存储函数中:

CREATE OR REPLACE FUNCTION get_events_without_overlaping() 
   RETURNS event 
AS $$ 
    WITH RECURSIVE group_events AS (...) select * from group_event; $$ 
LANGUAGE SQL;

并将此常量作为参数传递。当我运行这个函数时,我得到了一条记录,当我运行查询时,我得到了两条记录。怎么可能?

【问题讨论】:

  • 您的函数可能有错误的返回类型。请显示功能。
  • 我有一个名为 event 的表,我希望我的函数返回事件的记录 CREATE OR REPLACE FUNCTION get_events_without_overlaping() RETURNS event AS $$ WITH RECURSIVE group_events AS (...) select * from group_event; $$ LANGUAGE SQL
  • 你的函数应该返回SETOF event。请参阅上面的链接。
  • 你如何调用函数?

标签: postgresql stored-functions


【解决方案1】:

必须是:

CREATE OR REPLACE FUNCTION get_events_without_overlaping() 
   RETURNS SET OF event 
AS $$ 
    WITH RECURSIVE group_events AS (...) select * from group_event; $$ 
LANGUAGE SQL;

【讨论】:

    猜你喜欢
    • 2020-12-26
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    相关资源
    最近更新 更多