【发布时间】:2012-05-30 04:22:18
【问题描述】:
我需要从 plpgsql 函数返回动态生成的选择语句。这是我目前所拥有的:
CREATE OR REPLACE FUNCTION qa_scf(cname character varying, tname character varying)
RETURNS text AS
$BODY$
BEGIN
return '* from ' ||tname|| 'where ' ||cname ||' != ''AL''';
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
调用者,从批处理文件中运行:
select qa_scf('state', 'testtable')
这会返回文字文本“qa_scf * from testtable where state != 'AL'”。我需要从一个 sql 批处理文件运行这个查询,但我似乎找不到正确的返回语句让这个函数返回一个字符串,然后让 sql 批处理执行它。我正在使用 Postgres 9.0。
【问题讨论】:
-
问题可能出在这个函数的调用者如何处理结果上,而不是这个函数本身。
-
我给了上面的调用者。这也是我的想法,但是没有人根据来电者给我答案。
-
问题缺少的是调用者执行函数返回的SQL的方法。或者,如果您还没有完成它并且问题是“如何做”(=脚本中的动态 SQL),我建议 this answer
标签: sql postgresql plpgsql