gpt4 book ai didi

PostgreSQL 错误 : RETURN NEXT cannot have a parameter in function with OUT parameters

转载 作者:行者123 更新时间:2023-11-29 12:38:00 26 4
gpt4 key购买 nike

我在 PostgreSQL 9.2 中有一个 plpgsql 函数,它返回一个表。我试图找到我在数据库中的点对之间的距离。但是我在这个问题的标题中遇到了错误。

我想做这样的事情:

CREATE OR REPLACE FUNCTION max_dis(which_tab text)
RETURNS TABLE(P1 geometry, P2 geometry, dis double precision) as

$$
DECLARE
my_row RECORD;
my_row2 RECORD;

BEGIN

FOR my_row IN EXECUTE ('SELECT * FROM '||which_tab) LOOP
--
FOR my_row2 IN EXECUTE ('SELECT * FROM '||which_tab) LOOP

SELECT ST_DISTANCE(my_row.the_geom, my_row2.the_geom)

INTO dis;

RETURN NEXT my_row,my_row2;

END LOOP;

END LOOP;

RETURN;

END ;

$$
LANGUAGE plpgsql VOLATILE STRICT;

最佳答案

当您使用表函数时 - 声明为 RETURNS TABLE (),那么输出表的任何列都有一个隐式变量。在这种情况下,RETURN NEXT 不带参数使用,因为返回值由参数变量的内容组成。

CREATE OR REPLACE FUNCTION xx()
RETURNS TABLE(a int, b int) AS $$
BEGIN
a := 1;
b := 2;
RETURN NEXT;
b := 3;
RETURN NEXT;
RETURN;
END;
$$ LANGUAGE plpgsql;

但是您可以通过 RETURN QUERY 语句增强您的功能

BEGIN
RETURN QUERY EXECUTE format('SELECT t1.the_geom, t2.the_geom,
ST_DISTANCE(t1.the_geom, t2.geom)
FROM %I t1, %I t2', which_tab, which_tab);
RETURN;
END;

关于PostgreSQL 错误 : RETURN NEXT cannot have a parameter in function with OUT parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20468218/

26 4 0