2016-10-03 6 views
0

EXECUTE内から挿入IDを返そうとしています。これは正常に動作します: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$ 

私は、クエリを動的に生成されるようにEXECUTEを使用する必要があります。

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

ああを参照してください。ありがとうございました! –

関連する問題