使用简单的SQL函数:
CREATE OR REPLACE FUNCTION base.execute_indicator_group(id integer)
RETURNS base.batch AS $$
INSERT INTO base.batch (status, indicator_group_id) VALUES ('Pending', 1)
RETURNING *;
$$ LANGUAGE sql STRICT SECURITY DEFINER;
把它用在
FROM
条款:
SELECT * FROM base.execute_indicator_group(1);
id | status | created_date | updated_date | indicator_group_id
----+---------+----------------------------+----------------------------+--------------------
1 | Pending | 2018-08-06 23:43:15.076431 | 2018-08-06 23:43:15.076431 | 1
(1 row)
在plpgsql函数中(如果您想在函数中另外执行一些操作),您需要一个变量:
CREATE OR REPLACE FUNCTION base.execute_indicator_group(id integer)
RETURNS base.batch AS $$
DECLARE
result base.batch;
BEGIN
INSERT INTO base.batch (status, indicator_group_id) VALUES ('Pending', 1)
RETURNING *
INTO result;
RETURN result;
END;
$$ LANGUAGE plpgsql VOLATILE STRICT SECURITY DEFINER;