gpt4 book ai didi

sql - Postgres 动态查询函数

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

我需要创建一个函数来运行查询并返回结果,其中表名和列名是提供给函数的参数。我目前有这个:

CREATE OR REPLACE FUNCTION qa_scf(tname character varying, cname character varying)
RETURNS SETOF INT AS
$BODY$
BEGIN
RETURN QUERY SELECT * FROM tname WHERE cname !='AK' AND cname!='CK';
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;

运行时出现错误“Relation 'tname' des not exist”。我是为 Postgres 创建函数的新手,因此非常感谢您的帮助。我觉得 return int 是错误的,但我不知道还有什么可以让它返回返回行的所有列。谢谢!

最佳答案

您不能使用变量代替那样的标识符。您需要使用动态查询来完成。它看起来像这样:

EXECUTE 'SELECT * FROM ' || quote_ident(tname) 
|| ' WHERE ' || quote_ident(cname) || ' NOT IN (''AK'',''CK'');'
INTO result_var;

如果您使用的是 PostgreSQL 9.1 或更高版本,您可以使用 the format() function这使得构建这个字符串变得更加容易。

关于sql - Postgres 动态查询函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10639963/

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