我需要创建一个函数,该函数将运行查询并返回结果,其中表名和列名是赋予该函数的参数。我目前有这样的:Postgres动态查询函数
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;
这给了我错误“关系”tname'不存在“运行时。我是新的功能创建Postgres,所以任何帮助表示赞赏。我觉得返回int是错的,但我不知道还有什么可以让它返回返回行的所有列。谢谢!
我该如何声明result_var为? –
切勿在不使用适当的quote_FOO()函数的情况下将值插入动态sql语句中,否则您会打开注入攻击的大门。 – dbenhur
这是一个面向内部的数据库。 –