postgresql 将参数传递给视图(设置返回函数?)

kmynzznz  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(288)

我基本上有一个相当复杂的视图,它目前从上周的聚合中返回我想要的。

SELECT *
FROM ...
WHERE  t1.event_date >= ('now'::text::date - 7) 
...

现在我希望能够对任何给定的2个日期进行相同的计算,因此我希望能够将参数传递给我的视图。我想用类似这样的东西替换WHERE子句:

WHERE  t1.event_date BETWEEN %first date% AND %second_date%

我想我应该能够用一个集合返回函数来做到这一点,但不能确切地知道如何做到这一点。有什么想法吗

q0qdq0h2

q0qdq0h21#

Create a function(当返回一组行时,有时称为表函数)。有很多(procedural) languages,特别是PL/pgSQL。在您的例子中,LANGUAGE sql完成了这项工作:

CREATE OR REPLACE FUNCTION get_user_by_username(d1 date, d2 date)
  RETURNS TABLE ( ... )
  LANGUAGE sql AS
$func$
SELECT ...
WHERE  t1.event_date >= $1
AND    t1.event_date <  $2  -- note how I exclude upper border
$func$;

LANGUAGE sql示例:

  • 从PL/pgSQL函数返回行

LANGUAGE plpgsql示例:

  • PostgreSQL:错误:42601:返回“record”的函数需要列定义列表

相关问题