sql – Postgres动态查询功能
发布时间:2020-12-12 08:46:59 所属栏目:MsSql教程 来源:网络整理
导读:我需要创建一个函数来运行一个查询,并返回结果,并将表名称和列名称赋予函数.我目前有这个: CREATE OR REPLACE FUNCTION qa_scf(tname character varying,cname character varying)RETURNS SETOF INT AS$BODY$BEGINRETURN QUERY SELECT * FROM tname WHERE cn
我需要创建一个函数来运行一个查询,并返回结果,并将表名称和列名称赋予函数.我目前有这个:
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,所以任何帮助是赞赏.我觉得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,使构建此字符串更容易. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |