在SQL中使用变量

时间:2011-11-06 17:51:52

标签: postgresql

PostgreSQL newb here。对不起,这可能是微不足道的。

本质上我需要从本地表中获取一个任意值,然后在SELECT I的WHERE子句中使用它来触发远程表,以便返回我将插入到本地表中的行: / p>

“给我远程表中的所有行,其中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中处理这个问题?

1 个答案:

答案 0 :(得分:0)

既然你必须通过dblink出去,我可能会将它包装在一个函数中。

CREATE FUNCTION get_remote_foos() RETURNS int ...

使用plpgsql,您可以或多或少地编写示例中的代码。上面的签名假定您要返回插入的行数。手册中plgsql的全部细节 - 请注意该部分中的quote_ident和quote_literal函数。对于时间戳并不重要,但在其他情况下会很有用。