gpt4 book ai didi

sql-server - 如何在postgresql中声明局部变量?

转载 作者:行者123 更新时间:2023-11-29 11:06:05 25 4
gpt4 key购买 nike

有一个几乎相同但没有真正回答的问题 here .

我正在将应用程序从 MS SQL Server 迁移到 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)

如果 Postgresql 8.4 或什至 9.0 包含可简化翻译的重要功能,我将使用它。

最佳答案

Postgresql 历史上不支持命令级别的过程代码——仅在函数内。但是,在 Postgresql 9 中,添加了对 execute an inline code block 的支持。它有效地支持类似这样的东西,尽管语法可能有点奇怪,并且与您可以使用 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 有线协议(protocol)不允许诸如命令返回多个结果集之类的事情。因此,您不能简单地将 T-SQL 批处理或存储过程映射到 PostgreSQL 函数。

关于sql-server - 如何在postgresql中声明局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3157753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com