2011-11-06 73 views
1

PostgreSQL newb在這裏。對不起,這可能是微不足道的。在SQL中使用變量

本質上,我需要從本地表中獲取一個任意值,然後在SELECT的WHERE子句中使用它,以便針對遠程表啓動以返回將插入本地表的行:

「給我的所有行遠程表,其中在F1中的時間戳值比我同桌的本地版本,對於F1的最大時間戳值新」

事情是這樣的,八九不離十:

DECLARE @variable timestamp; 
@variable = SELECT MAX(f1) from Foo; 

INSERT INTO Foo SELECT * FROM (dblink('conn', 'select * from RemoteFoo WHERE f1 > @variable') as 
t 
(f1 int, f2 timestamp) 

我該如何處理PostgreSQL的?

回答

0

既然你必須通過dblink出去,我可能會把它包裝在一個函數中。

CREATE FUNCTION get_remote_foos() RETURNS int ... 

使用plpgsql你可以或多或少的在你的例子中編寫代碼。上面的簽名假定您想要返回插入的行數。手冊中plgsql的詳細信息 - 請留意該部分中的quote_ident和quote_literal函數。對時間戳不重要,但在其他情況下會有用。

+0

完美,謝謝。這正是我所需要的。 –