gpt4 book ai didi

function - 使用 eval 函数返回表

转载 作者:行者123 更新时间:2023-11-29 13:29:09 25 4
gpt4 key购买 nike

我有兴趣学习如何在 Postgres 中使用动态函数。我基本上需要一个动态函数来吐出一个表或一个子表(从现有表中选择的几个列)。

我已经创建了以下 eval() 函数,但它没有像我希望的那样工作。我希望我的函数返回在函数中作为字符串引入的查询结果。该函数目前仅返回第一列的第一个值 (enrich_d_dkj_p_k27ac)。看来我应该将 returnstext 更改为其他内容?

create or replace function eval() returns text
as
$body$
declare
result text;
begin
execute 'select enrich_d_dkj_p_k27ac,enrich_lr_dkj_p_k27ac,enrich_r_dkj_p_k27ac
from dkj_p_k27ac' into result;
return result;
end;
$body$
language plpgsql;

SELECT eval();

结果是:

eval text
2.4

但这基本上只是第一列的第一个值 - 我需要显示整个表 - 或者换句话说 - 指示的 SELECT 的结果。

最佳答案

像这样工作(但没用):

create or replace function eval()
RETURNS TABLE (enrich_d_dkj_p_k27ac text -- replace with actual column types
, enrich_lr_dkj_p_k27ac text
, enrich_r_dkj_p_k27ac text) AS
$func$
begin

RETURN QUERY EXECUTE
'select enrich_d_dkj_p_k27ac,enrich_lr_dkj_p_k27ac,enrich_r_dkj_p_k27ac
from dkj_p_k27ac';

end
$func$ language plpgsql;

调用:

SELECT * FROM eval();

不需要eval()函数,直接执行语句即可:

select enrich_d_dkj_p_k27ac,enrich_lr_dkj_p_k27ac,enrich_r_dkj_p_k27ac
from dkj_p_k27ac;

动态调用无法解决您的根本问题:

关于function - 使用 eval 函数返回表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810647/

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