是否可以在不创建匿名块的情况下将过程输出参数存储在postgres中?
想象一下这样的场景:
create or replace procedure test(in one integer, in two integer, inout three integer)
language plpgsql
as
$$
begin
three:=one+two;
end
$$
如果我这样称呼它:
call test(2,2,null);
结果是4,但如果我尝试将结果添加到这样的临时表中:
create temp table store(a int);
insert into store (a)
call test(2,2,null);
我有错误:
错误:语法错误在"处或附近;呼叫";线路15:呼叫测试(2,2,空(;^SQL状态:42601字符:253
为了避免do语句(因为我必须在纯sql中这样做(,我不知道如何存储输出变量。
使用函数而非过程:
CREATE OR REPLACE FUNCTION public.test(one integer, two integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare
three integer;
begin
three:=one+two;
return three;
end
$function$
;
select * from test(2,2);
test
------
4
create temp table store(a int);
insert into store (a) select * from test(2,2);
select * from store;
a
---
4
函数可以返回select
中的值。