我有一个非常简单的函数定义如下:
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;
我苦苦挣扎的地方是如何通过 RETURNING 子句实际返回存储在 ident
字段中的值。我试过将值设置为一个变量,但要么不起作用,要么我只是弄乱了语法。
最佳答案
您缺少变量声明、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;
关于postgresql - 使用 RETURNING 子句返回 PostgreSQL 中最后插入行的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18089996/