Postgresql 在postgres的同一函数中检索插入/更新/删除的记录

Postgresql 在postgres的同一函数中检索插入/更新/删除的记录,postgresql,postgresql-9.1,postgresql-9.2,postgresql-9.3,postgresql-8.4,Postgresql,Postgresql 9.1,Postgresql 9.2,Postgresql 9.3,Postgresql 8.4,我正在使用一个函数将值插入postgres中的表中。是否可以在同一函数中检索插入/更新/删除的记录 我是博士后的新手,所以如果有人能指导或解释如何做到这一点,我将不胜感激 以下是我的示例函数: CREATE OR REPLACE FUNCTION SampleFunction (in name varchar, in descsciption varchar, in userid varchar) RETURNS void AS $BODY$ begin insert into

我正在使用一个函数将值插入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'

使用
返回
子句

 insert into sampletable(id,categoryname,categorydesc,createdby) 
 values(default,name,descsciption,userid)
 returning *
e、 g.(未经测试):

注意使用
返回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;

返回类型应该是什么。我想我也需要更改返回类型,对吗?获取错误:错误:查询没有结果的目标data@user2438237若您在函数中使用它,那个么和任何其他返回查询的集合一样,您必须提供一个目的地。使用
返回查询插入。。。。返回…
,或在结果上执行
循环
,等等。使用
选择
所做的所有常规操作都有效。因此,是的,如果您希望返回结果,您将需要
返回表
,或者将
输出
输入
参数与
返回记录集
一起使用。是的,我正在函数中使用它。insert语句位于函数中。然而,我不能理解你。您能给我指一些文档或示例吗?在这些文档或示例中,我可以看到一个带有insert statemnt的函数,该函数还将插入的记录集返回到UI界面?@user2438237 Answer用示例更新。有关
返回
返回表、
返回设置的
OUT`和
INOUT
参数等的详细信息,请参阅用户手册。
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;