如何声明局部变量 postgreql?

有一个几乎相同,但没有真正回答问题 给你

我正在将一个应用程序从 MSSQLServer 迁移到 PostgreSQL。在代码的许多地方,我使用本地变量,所以我想去的变化,需要较少的工作,所以你能告诉我哪一个是最好的方式来翻译以下代码?

-- 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)

如果 Postgreql 8.4甚至9.0包含能够简化翻译的重要特性,我将使用它。

148809 次浏览

Postgreql 在历史上不支持命令级的过程代码——只支持函数内部的过程代码。然而,在 Postgreql 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 函数。