下面是一个提供两列结果的函数。
在这个函数中,有一个循环
用于返回结果。
功能:
Create Type Repeat_rs as ( label text, count bigint ) CREATE OR REPLACE FUNCTION Repeat(fromDate date,toDate date) returns SETOF Repeat_rs AS $$ 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;
有没有可能不使用循环就返回行?
如果是这样的话,请与我分享我们如何做到这一点。
我是否能够编写一个函数,在不使用循环的情况下将记录插入到表中?
帮我解决这个问题。
提前谢谢。
您可以使用SELECT查询在表中插入值,如下所示:
CREATE OR REPLACE FUNCTION Repeat(fromDate date,toDate date)
returns VOID
AS
$$
BEGIN
INSERT INTO TABLE_NAME
SELECT label, count(*) AS Cnt from test where date between fromDate and toDate group by circle
END;
$$
LANGUAGE plpgsql;
您不需要额外的类型定义。要返回多行,请使用返回查询
:
大概是这样的:
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;
问题内容: 我想在PostgreSQL上设置一个返回表的函数。这是该函数的源代码: 调用该函数仅返回一列,并用’,’分隔值: 我期望有不同的列(在函数的开头为表指定的每个值一个),而不仅仅是所有值的列。有谁知道为什么会这样,我该如何解决? 谢谢蒂莫 问题答案: 使用 代替 以获得表格的结果。 (像对待表一样处理该函数。)
问题内容: 我已经写了这个功能: 哪个有效,并在单列记录类型中返回结果。请注意,可能会返回多于一行。 现在的响应是: 我想获得的结果不是记录,而是多列 有没有一种方法可以从PostgreSQL函数返回多列 问题答案: 我可以通过以下查询看到它:
我有一个返回dict对象的函数,我想利用pandas/numpy在数据帧的每一行上为该函数执行列操作/向量化的能力。函数的输入在dataframe中指定,我希望函数的输出成为现有dataframe上的新列。下面是一个例子。 期望输出: 我读了这个答案,大部分内容都是这样的,但是当函数返回一个dict对象,其中包含所需的列名作为dict中的键时,我不太明白该怎么做。
问题内容: 在基本的Postgres函数教程中,有一个带有如下参数的示例: 然后结果看起来像 但是,假设您要在执行连接所产生的列上执行该函数,并且您无权修改该函数或使用替代函数?例如,使用一些玩具数据: 在单列“ hi_lo”中返回具有2元组值的结果。 将查询括在括号中并尝试从中查询不会更改输出的格式。所以 不会影响结果形状。 以下尝试导致错误“子查询必须仅返回一列” 最后,我也尝试过,但是由于元
问题内容: 我想测试Postgres函数的结果(不可能更改函数)。 该函数将REFCURSOR和其他一些内容作为参数接收,并返回相同的RECURSOR。 现在,我想在Postgres中创建一个小测试,以获取此FUNCTION的结果。类似于下面的代码(这是我的方法,但是不起作用): 关于如何使它起作用的任何建议?可用于测试此类函数的通用解决方案(获取游标并返回游标? 如果我们不知道要返回的行类型,我
Go语言内置支持多返回值,这个在Go语言中用的很多,比如一个函数同时返回结果和错误信息。 package main import "fmt" // 这个函数的返回值为两个int func vals() (int, int) { return 3, 7 } func main() { // 获取函数的两个返回值 a, b := vals() fmt.Println(a