动态查询PostgreSQL

4

我是Postgres的新手,正在运行以下动态查询

EXECUTE 'Select * from products';

我收到了以下回复。
ERROR: syntax error at or near "'Select * from products'" 
LINE 1: EXECUTE 'Select * from products';

我知道我可能忽略了一些基本的东西。

2个回答

3

plpgsqlEXECUTE语句,可以执行你想要执行的SQL查询字符串。你标记了,所以这可能是你正在寻找的。

只能在plpgsql函数或DO语句(匿名代码块)中使用。 在精细的手册中明确了EXECUTESQL-EXECUTE之间的区别

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

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

2

根据详细手册

Synopsis

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

Description

EXECUTE is used to execute a previously prepared statement.

因此,EXECUTE不会执行一串SQL字符串,它执行的是一个由名称标识的预处理语句,您需要使用PREPARE单独准备语句:

=> prepare stmt as select * from products;
=> execute stmt;
-- "select * from products" output goes here...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接