gpt4 book ai didi

postgresql,pgadmin错误RETURN不能在函数返回集中有参数

转载 作者:行者123 更新时间:2023-11-29 11:44:51 24 4
gpt4 key购买 nike

我做了一个这样的函数

create or replace function get_source2(TableName character varying)
returns setof integer as
$$
declare
geom geometry;
snode integer;
begin
execute ('select get_source(geom) from '|| TableName)
into snode;
return snode;
end
$$
language plpgsql;

输出数据为数组类型

所以我尝试使用setof

如果我不使用setof,它运行良好但只有一个结果出来。

但是如果我使用 setof我收到这样的错误

error : RETURN cannot have a parameter in function returning set

最佳答案

小心!您的函数的编写方式很容易受到 SQL 注入(inject)攻击!

你应该使用

$$BEGIN
RETURN QUERY EXECUTE 'SELECT get_source(geom) FROM '
|| quote_ident(TableName);
END;$$

然后 RETURNS SETOF integer 就可以正常工作了。

阅读 the documentation如何在表函数中使用 RETURN:

要么你做

RETURN NEXT expression1;
RETURN NEXT expression2;
...
RETURN;

RETURN QUERY SELECT ...;

RETURN QUERY EXECUTE 'SELECT ...';

但从来没有

RETURN expression;

关于postgresql,pgadmin错误RETURN不能在函数返回集中有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40864464/

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