PostgreSQL中用户定义的变量

时间:2013-01-10 15:12:29

标签: postgresql variables dynamic-sql

我有以下MySQL脚本,我想在PostgreSQL中实现。

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

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

1 个答案:

答案 0 :(得分:11)

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

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

SELECT current_setting('foo.test');

了解Customized Options in the manual

PostgreSQL 9.1 or earlier you needed to declare custom_variable_classes之前,您可以使用它。

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

使用动态SQL时,请确保防止SQL注入。

关于自定义变量的相关问题:
Is there a way to define a named constant in a PostgreSQL query?