2013-08-06 2 views
1

У меня есть очень простая функция, определенная следующим образом:Возврат ID последней вставленной строки в PostgreSQL с ВОЗВРАЩЕНИЕ пункт

CREATE OR REPLACE FUNCTION create_new_order(....) RETURNS integer AS 
$BODY$ 
BEGIN 
    PERFORM add_points_to_usage(client_id_p, date_in_p, total_points_p); 

INSERT INTO orders (...) VALUES (...) 
    RETURNING ident; 
END; 
$BODY$ LANGUAGE plpgsql; 

Где я изо всех сил, как на самом деле ВЕРНУТЬ значение, хранящееся в поле ident обратно через предложение RETURNING. Я попытался установить значение переменной, но это либо не работает, либо я просто испортил синтаксис.

ответ

1

Вы пропустили объявление переменной, то пункт INTO и окончательный RETURN:

CREATE OR REPLACE FUNCTION create_new_order(....) RETURNS integer AS 
$BODY$ 
DECLARE 
    var_ident int; 
BEGIN 
    PERFORM add_points_to_usage(client_id_p, date_in_p, total_points_p); 
    INSERT INTO orders (...) VALUES (...) 
     RETURNING ident INTO var_ident; 
    RETURN var_ident; 
END; 
$BODY$ LANGUAGE plpgsql; 
+0

Красивая, спасибо. – Gargoyle

Смежные вопросы