gpt4 book ai didi

sql-server - 在 PostgreSQL 中声明临时变量

转载 作者:行者123 更新时间:2023-11-29 14:24:42 28 4
gpt4 key购买 nike

我正在从 SQL Server 迁移到 PostgreSQL。我从 How to declare a variable in a PostgreSQL query 看到了 native sql 查询中没有临时变量之类的东西。

嗯,我非常需要一些...我将如何混合 plpgsql?我必须创建一个函数然后删除该函数才能访问一种语言吗?这对我来说似乎很容易出错,恐怕我遗漏了一些东西。

编辑:

cmd.CommandText="insert......" +
"declare @app int; declare @gid int;"+
"set @app=SCOPE_IDENTITY();"+ //select scope_identity will give us our RID that we just inserted
"select @gid=MAX(GROUPID) from HOUSEHOLD; set @gid=@gid+1; "+
"insert into HOUSEHOLD (APPLICANT_RID,GROUPID,ISHOH) values "+
"(@app,@gid,1);"+
"select @app";
rid=cmd.ExecuteScalar();

直接从使用它的应用程序中提取。请注意,我们正在从 SQL Server 转换为 Postgre。 (另外,我想出了 scope_identity() 我认为的位)

最佳答案

要插入的表的架构是什么?我将尝试根据架构的这种假设来回答:

CREATE TABLE HOUSEHOLD (
APPLICANT_RID SERIAL, -- PostgreSQL auto-increment
GROUPID INTEGER,
ISHOH INTEGER
);

如果我正确理解您的意图,在 PostgreSQL >= 8.2 中,查询将是:

INSERT INTO HOUSEHOLD (GROUPID, ISHOH)
VALUES ((SELECT COALESCE(MAX(GROUPID)+1,1) FROM HOUSEHOLD), 1)
RETURNING APPLICANT_RID;

-- Added call to the COALESCE function to cover the case where HOUSEHOLD
-- is empty and MAX(GROUPID) returns NULL

在 PostgreSQL >= 8.2 中,任何 INSERT/DELETE/UPDATE 查询都可能有一个 RETURNING 子句,其作用类似于对更改查询的结果集执行的简单 SELECT。

关于sql-server - 在 PostgreSQL 中声明临时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941225/

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