10

我有以下要在 PostgreSQL 中实现的 MySQL 脚本。

 SET @statement = search_address_query;
      PREPARE dynquery FROM @statement;
      EXECUTE dynquery;
      DEALLOCATE PREPARE dynquery;

如何使用 PostgreSQL 定义用户定义的变量“@statement”。

4

1 回答 1

20

Postgres 通常不在普通 SQL 中使用变量。但你也可以这样做:

SET foo.test = 'SELECT bar FROM baz';

SELECT current_setting('foo.test');

阅读手册中的自定义选项

PostgreSQL 9.1 或更早版本中,您需要先声明custom_variable_classes才能使用它。

但是,如果没有 PL(过程语言) ,您将无法使用 EXECUTE动态 SQL 。您将使用DO命令来执行临时语句(但不能从中返回数据)。或者CREATE FUNCTION用来创建一个执行动态 SQL 的函数(并且可以以任何可以想象的方式返回数据)。

使用动态 SQL 时一定要防范 SQL 注入。

有关的:

于 2013-01-10T15:57:01.427 回答