我有以下MySQL脚本,我想在PostgreSQL中实现。
SET @statement = search_address_query;
PREPARE dynquery FROM @statement;
EXECUTE dynquery;
DEALLOCATE PREPARE dynquery;
如何使用PostgreSQL定义用户定义的变量“@statement”。
答案 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?