首页 > 解决方案 > Postgres SQL - 将子句输出到标量变量

问题描述

对于 SQL 服务器中的以下代码,需要将其转换为 PostgresSQL。我确实尝试了与 SQL Server 中相同的方法,但它确实有效。

declare @ID table (ID int)

insert into MyTable(ID)
output inserted.ID into @ID
values (1)

所以上面的代码在 SQL server 中运行良好,但在 Postgres 中它不起作用。

有人可以帮助将此代码转换为 Postgres 吗?也有人可以帮助我在 Postgres 中获取带有 inout 和 out 参数的示例 SP

标签: postgresqlstored-procedures

解决方案


假设这用 PL/pgSQL 编写的存储函数(或过程)的一部分,您可以使用手册中记录的返回子句:

....
declare
  l_generated_id int;
begin
  ...
  insert into my_table(id) 
  values (1)
  returning id into l_generated_id;
  ...
end;

但我不得不承认这似乎相当不必要,因为插入的值是在 INSERT 语句中硬编码的


推荐阅读