gpt4 book ai didi

postgresql - 从存储过程中获取标识

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

我的程序:

CREATE PROCEDURE MyInsert(_sno integer, _eid integer, _sd date, _ed date, _sid integer, _status boolean)
LANGUAGE SQL
AS $BODY$
INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
VALUES(_sno, _eid, _sd, _ed, _sid, _status);
$BODY$;

我需要在 Postgresql 11 的另一个过程中获取输出参数 vlaue。

 CALL MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' );

如何从另一个过程中获取返回值。

最佳答案

自然而然的事情是使用一个函数:

CREATE FUNCTION myinsert(
IN _sno integer,
IN _eid integer,
IN _sd date,
IN _ed date,
IN _sid integer,
IN _status boolean,
OUT _id bigint
) LANGUAGE sql
AS $BODY$
INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
VALUES(_sno, _eid, _sd, _ed, _sid, _status)
RETURNING id;
$BODY$;

在 PL/pgSQL 代码中,您可以这样调用它:

SELECT myinsert(1, 1, current_date, current_date, 1, FALSE)
INTO _id;

如果你坚持一个过程,你可以这样做:

CREATE PROCEDURE myinsert(
IN _sno integer,
IN _eid integer,
IN _sd date,
IN _ed date,
IN _sid integer,
IN _status boolean,
INOUT _id bigint
) LANGUAGE sql
AS $BODY$
INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
VALUES(_sno, _eid, _sd, _ed, _sid, _status)
RETURNING id;
$BODY$;

并这样调用它:

CALL myinsert(1, 1, current_date, current_date, 1, FALSE, _id);

请注意,对于过程,定义 OUT 参数是很自然的,但 PostgreSQL 过程尚不支持 OUT 参数。

关于postgresql - 从存储过程中获取标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57973214/

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