2013-01-10 68 views
4

我有我想在PostgreSQL中實現的以下MySQL腳本。PostgreSQL中的用戶自定義變量

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

如何使用PostgreSQL定義用戶定義變量「@statement」。

+0

你能簡單地'EXECUTE search_address_query;'? –

回答

9

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?