我是postgres的新手并且在动态查询后运行
EXECUTE 'Select * from products';
我收到了以下回复。
ERROR: syntax error at or near "'Select * from products'"
LINE 1: EXECUTE 'Select * from products';
我知道这将是我缺少的基本内容
答案 0 :(得分:2)
plpgsql 的EXECUTE
语句可以执行您要执行的操作 - 执行SQL查询字符串。您标记了dynamic,因此这可能就是您要找的内容。
仅适用于plpgsql函数或DO
语句(匿名代码块)。 The distinction between EXECUTE
and SQL-EXECUTE
made clear in the fine manual:
注意: PL / pgSQL
EXECUTE
语句与EXECUTE
SQL无关 PostgreSQL服务器支持的语句。服务器的EXECUTE
语句不能直接在PL / pgSQL函数中使用(并且是 不需要)。
如果要根据示例指示从动态SELECT
查询返回值,则需要创建一个函数。 DO
语句始终返回void
。 More about returning values from a function in the very fine manual.
答案 1 :(得分:1)
来自fine manual:
<强>概要强>
EXECUTE name [ ( parameter [, ...] ) ]
<强>描述强>
EXECUTE
用于执行先前准备的语句。
因此EXECUTE
不执行SQL字符串,它执行由名称标识的预准备语句,您需要使用PREPARE单独准备语句:
=> prepare stmt as select * from products;
=> execute stmt;
-- "select * from products" output goes here...