我正在使用一个函数将值插入到postgres的表中。是否可以在同一函数中检索插入/更新/删除的记录。
我是帖子的新手,所以如果有人可以指导或解释如何做到这一点,我将不胜感激。
这是我的示例函数:
CREATE OR REPLACE FUNCTION SampleFunction (in name varchar, in descsciption varchar, in userid varchar) RETURNS void AS
$BODY$
begin
insert into sampletable(id,categoryname,categorydesc,createdby)
values(default,name,descsciption,userid);
end
$BODY$
LANGUAGE 'plpgsql'
使用 RETURNING
子句。
insert into sampletable(id,categoryname,categorydesc,createdby)
values(default,name,descsciption,userid)
returning *
例如(未经测试):
CREATE OR REPLACE FUNCTION SampleFunction (in name varchar, in descsciption varchar, in userid varchar) RETURNS SETOF sampletable AS
$BODY$
begin
RETURN QUERY
insert into sampletable(id,categoryname,categorydesc,createdby)
values(default,name,descsciption,userid)
returning *;
end
$BODY$
LANGUAGE plpgsql;
请注意使用 RETURNS SETOF sampletable
返回表的行类型,因此不必重复列定义。
有关更多信息,请参阅 PL/PgSQL 手册。
请注意,在这种情况下,您根本不需要PL/PgSQL。如果你坚持把它作为一个函数(这不是必需的),你可以写:
CREATE OR REPLACE FUNCTION SampleFunction (name varchar, descsciption varchar, userid varchar) RETURNS SETOF sampletable AS
$BODY$
insert into sampletable(id,categoryname,categorydesc,createdby)
values(default,$1,$2,$3)
returning *;
$BODY$
LANGUAGE sql;