PostgreSQL-函数声明-查询中的动态位置
如何在函数声明中将“执行sql\u字符串”更改为“返回查询”,但必须使用where数组。PostgreSQL-函数声明-查询中的动态位置,postgresql,Postgresql,如何在函数声明中将“执行sql\u字符串”更改为“返回查询”,但必须使用where数组。 换句话说,如何改变这一点 p_sql := 'SELECT * FROM tbl WHERE ' || array_to_string(where_arr, ' AND '); FOR item IN EXECUTE p_sql LOOP RETURN NEXT item; END LOOP; 对此 RETURN QUERY SELECT * FROM t
换句话说,如何改变这一点
p_sql := 'SELECT *
FROM tbl
WHERE ' || array_to_string(where_arr, ' AND ');
FOR item IN EXECUTE p_sql
LOOP
RETURN NEXT item;
END LOOP;
对此
RETURN QUERY
SELECT *
FROM tbl
WHERE || array_to_string(where_arr, ' AND '); -- this is the place
我希望我的编辑器(phpstorm、notepad++)将SQL视为SQL而不是字符串。
该
where\u arr
的内容是什么?where\u arr有很好的答案。但这几乎是一样的。@wevu这是对你提出的问题的回答,据我所知。您只是缺少了execute
,而这正是您所缺少的。除了指出你对这个问题采取了错误的方法这一事实之外,没有其他答案是可能的。是的,是我的错。我的编辑器(phpstorm、notepad++)将这些解释为字符串,我希望它们是SQL代码。
return query execute $$
select *
from tbl
where $$ || array_to_string(where_arr, ' and ');