3

我是 postgres 的新手并运行以下动态查询

EXECUTE 'Select * from products';

我得到以下回应。

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

我知道这将是我想念的基本内容

4

2 回答 2

3

plpgsqlEXECUTE的语句,它会做你想做的事——执行一个 SQL 查询字符串。您标记了,所以这可能是您正在寻找的。

仅适用于 plpgsql 函数或DO语句(匿名代码块)。之间的区别在精品手册中明确EXECUTESQL-EXECUTE

注意: PL/pgSQL语句与PostgreSQL 服务器支持EXECUTE的 SQL 语句无关。EXECUTE服务器的EXECUTE 语句不能直接在 PL/pgSQL 函数中使用(也不需要)。

如果您想从动态SELECT查询中返回值,如您的示例所示,您需要创建一个函数。DO语句总是返回void更多关于从非常好的手册中的函数返回值的信息。

于 2012-05-22T21:35:10.320 回答
2

来自精美手册

概要

EXECUTE name [ ( parameter [, ...] ) ]

描述

EXECUTE用于执行先前准备好的语句。

因此EXECUTE不执行 SQL 字符串,它执行由名称标识的准备好的语句,您需要使用PREPARE单独准备语句:

=> prepare stmt as select * from products;
=> execute stmt;
-- "select * from products" output goes here...
于 2012-05-22T20:49:34.463 回答