2016-10-03 1 views
0

EXECUTE 내에서 삽입 ID를 반환하려고합니다. 이 잘 작동 : 나는 쿼리를 동적으로 생성 될 것이다 EXECUTE 사용할 필요가postgreSQL에서 값을 반환하는 방법 PL/pgSQL 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$ 

: 그 일을 할 때

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$ 

그러나, 내부 내가 오류가 실행합니다.

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

EXECUTE에서 사용할 경우 어떻게 반환 값 (특히이 경우 삽입 ID)을 얻을 수 있습니까?

답변

2

사용 execute... into... :

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

은 하나의 잘못 인용이 어떤 작업을 수행하는지 Executing Dynamic Commands

+0

아를 참조하십시오. 고맙습니다! –

관련 문제