gpt4 book ai didi

postgresql - 如何在 postgreSQL PL/pgSQL EXECUTE 中返回一个值

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

我正在尝试从 EXECUTE 中返回插入 ID。这很好用:

CREATE OR REPLACE FUNCTION public.mytest2()
RETURNS INTEGER
LANGUAGE plpgsql
AS $function$
DECLARE
retval INTEGER;
RETURNING "DULid" INTO retval;';
BEGIN
INSERT INTO "dbUpdateLog" (notes) VALUES ($$hello$$) RETURNING "DULid" INTO retval;
RETURN retval;
END;
$function$

但是,在 EXECUTE 中执行此操作时出现错误:

CREATE OR REPLACE FUNCTION public.mytest2()
RETURNS INTEGER
LANGUAGE plpgsql
AS $function$
DECLARE
retval INTEGER;
BEGIN
EXECUTE 'INSERT INTO "dbUpdateLog" (notes) VALUES ($$hello$$) RETURNING "DULid" INTO retval;';
RETURN retval;
END;
$function$

我需要使用 EXECUTE,因为查询将动态生成。这是错误:

ERROR:  syntax error at or near "INTO"
LINE 1: ...Log" (notes) VALUES ($$hello$$) RETURNING "DULid" INTO retva...

在 EXECUTE 中使用时如何获取返回值(在本例中特别是插入 ID)?

最佳答案

使用执行...进入...:

BEGIN
EXECUTE 'INSERT INTO "dbUpdateLog" (notes) VALUES ($$hello$$) RETURNING "DULid"'
INTO retval;
RETURN retval;
END;

参见 Executing Dynamic Commands

关于postgresql - 如何在 postgreSQL PL/pgSQL EXECUTE 中返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842092/

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