Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL-函数声明-查询中的动态位置_Postgresql - Fatal编程技术网

PostgreSQL-函数声明-查询中的动态位置

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

如何在函数声明中将“执行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 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 ');