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