如何在postgreSQL PL / pgSQL EXECUTE中返回值

Tim*_*lee 3 postgresql plpgsql

我正在尝试从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$
Run Code Online (Sandbox Code Playgroud)

但是,在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$
Run Code Online (Sandbox Code Playgroud)

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

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

在EXECUTE中使用时,如何获得返回值(在这种情况下,尤其是插入ID)?

kli*_*lin 5

用途execute... into...

BEGIN
    EXECUTE 'INSERT INTO "dbUpdateLog" (notes) VALUES ($$hello$$) RETURNING "DULid"'  
    INTO retval;
    RETURN retval;
END;
Run Code Online (Sandbox Code Playgroud)

请参阅执行动态命令