gpt4 book ai didi

database - PostgreSQL - 返回多列的函数

转载 作者:太空狗 更新时间:2023-10-30 02:00:01 24 4
gpt4 key购买 nike

这是一个提供 2 列结果的函数。

在这个函数中有一个Loop被用来返回结果。

函数:

Create Type Repeat_rs as (label text,count bigint)CREATE OR REPLACE FUNCTION Repeat(fromDate date,toDate date)returns SETOF  Repeat_rsAS $$Declare someVariableName Repeat_rs;BEGIN    For someVariableName in (        SELECT label, count(*) AS Cnt from test where date between fromDate and toDate group by circle    ) Loop    Return Next someVariableName;    End Loop;    Return;END;$$LANGUAGE plpgsql;

是否有可能在不使用循环的情况下返回行?

如果是这样,请与我分享我们如何做到这一点。

我是否可以编写一个函数来在不使用循环的情况下将记录插入到表中?

帮我解决这个问题。

提前致谢。

最佳答案

你不需要额外的类型定义。要返回多行,请使用 return query:

像这样:

CREATE OR REPLACE FUNCTION Repeat(fromDate date,toDate date)
returns table (label text, cnt bigint)
AS
$$
BEGIN
Return query
SELECT label, count(*) AS Cnt
from test
where date between fromDate and toDate
group by label;
END;
$$
LANGUAGE plpgsql;

你甚至不需要 PL/pgSQL 函数,你可以为此使用一个简单的 SQL 函数:

CREATE OR REPLACE FUNCTION Repeat(fromDate date, toDate date)
returns table (label text, cnt bigint)
AS
$$
SELECT label, count(*) AS Cnt
from test
where date between fromDate and toDate
group by label;
$$
LANGUAGE sql;

关于database - PostgreSQL - 返回多列的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23106445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com