动态查询postgres

时间:2012-05-22 20:25:00

标签: postgresql dynamic

我是postgres的新手并且在动态查询后运行

EXECUTE 'Select * from products';

我收到了以下回复。

ERROR: syntax error at or near "'Select * from products'" 
LINE 1: EXECUTE 'Select * from products';

我知道这将是我缺少的基本内容

2 个答案:

答案 0 :(得分:2)

plpgsql EXECUTE语句可以执行您要执行的操作 - 执行SQL查询字符串。您标记了,因此这可能就是您要找的内容。

仅适用于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语句始终返回voidMore 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...