如何在postgresql中声明局部variables?

这里有一个几乎相同的,但没有真正回答的问题。

我正在将一个应用程序从MS SQL Server迁移到PostgreSQL。 在代码中的很多地方我使用局部variables,所以我想去做需要较less工作的变化,那么请告诉我哪个是翻译下面代码的最好方法?

-- MS SQL Syntax: declare 2 variables, assign value and return the sum of the two declare @One integer = 1 declare @Two integer = 2 select @One + @Two as SUM 

这返回:

 SUM ----------- 3 (1 row(s) affected) 

我将使用Postgresql 8.4甚至9.0,如果它包含重要的fetaures,将简化翻译。

Postgresql历史上不支持命令级的程序代码 – 只在函数内部。 但是,在Postgresql 9中,已经增加了对内联代码块的支持,可以有效地支持这样的内容,虽然语法可能有些奇怪,并且与使用SQL Server可以执行的操作相比,有很多限制。 值得注意的是,内联代码块不能返回结果集,所以不能用于上面概述的内容。

一般来说,如果你想写一些程序代码并且返回一个结果,你需要把它放在一个函数中。 例如:

 CREATE OR REPLACE FUNCTION somefuncname() RETURNS int LANGUAGE plpgsql AS $$ DECLARE one int; two int; BEGIN one := 1; two := 2; RETURN one + two; END $$; SELECT somefuncname(); 

据我所知,PostgreSQL有线协议并不允许返回多个结果集。 所以你不能简单地将T-SQL批处理或存储过程映射到PostgreSQL函数。