文档章节

PostgreSQL在函数内返回returning

kenyon_君羊
 kenyon_君羊
发布于 2014/02/13 19:36
字数 188
阅读 912
收藏 2
开发咨询,想在function返回之前insert或者update的值,postgresql有个returning的特性,可以返回之前各种DML(insert,delete,update)掉的值,比mysql的返回last_insert_id更丰富一点。

环境:
PostgreSQL 9.3.2
CentOS 6.3

类似的Function如下:
CREATE OR REPLACE FUNCTION fun_test(v_id int, v_remark text)
  RETURNS integer AS
$BODY$

declare 
   o_id int;
begin

   perform 1  from foo where id=v_id and remark = v_remark ;

if not found then 
   insert into foo(remark) values (v_remark) returning id into o_id;
return  o_id;
else 
   update foo set  id=v_id, remark=v_remark where id=v_id and remark = v_remark  returning id into o_id;
return o_id ;
end if;

exception when others then
raise exception 'exec fun fun_test error,PLZ contact DBA!';
return  999;

end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION fun_test(int, text)
  OWNER TO postgres;
参考:
http://my.oschina.net/Kenyon/blog/54376
http://my.oschina.net/Kenyon/blog/108303

© 著作权归作者所有

共有 人打赏支持
kenyon_君羊
粉丝 499
博文 170
码字总数 121714
作品 0
杭州
其他
私信 提问
加载中

评论(4)

kenyon_君羊
kenyon_君羊

引用来自“mark35”的评论

不知道可以用into的方式来赋值,以前只知道SELECT INTO的用法

都类似的,都需要into一个变量 0
mark35
mark35
不知道可以用into的方式来赋值,以前只知道SELECT INTO的用法
kenyon_君羊
kenyon_君羊

引用来自“mark35”的评论

原来在函数内returning是这么用的

嗯。需要定义一个返回变量
mark35
mark35
原来在函数内returning是这么用的
PostgreSQL用户应掌握的高级SQL特性

PostgreSQL数据库在SQL和NoSQL方面具有很多丰富的特性,本文将先从SQL高级特性入手来进行介绍。 一、PostgreSQL的SQL高级特性 这一部分主要介绍PostgreSQL在SQL方面的高级特性,例如WITH查询...

技术小能手
2018/08/21
0
0
PostgreSQL用户应掌握的高级SQL特性(有书送)

作者介绍 谭峰,网名francs,中国开源软件推进联盟PostgreSQL分会特聘专家,《PostgreSQL实战》作者之一,《PostgreSQL 9 Administration Cookbook》译者之一。现就职于浙江移动负责应用上云...

DBAplus社群
2018/08/21
0
0
写一个“特殊”的查询构造器 - (七、DML 语句、事务)

查询语句 (DQL) 的构造功能开发完毕,我们再给查询构造器增加一些对 DML (Data Manipulation Language) 语句的支持,如简单的 insert、update、delete 操作。 insert 我们先回顾下 PDO 原生的...

MrQ被抢注了
2018/05/23
0
0
PostgreSQL merge insert(upsert/insert into on conflict) 如何区分数据是INSERT还是UPDATE

背景 使用insert into on conflict update语法,可以支持UPSERT的功能,但是到底这条SQL是插入的还是更新的呢?如何判断 通过xmax字段的值是否不为0,可以判断,如果是UPDATE,XMAX里面会填充...

pg小助手
2018/10/19
0
0
PostgreSQL SRF (set-returning functions) 函数where, index实现

标签 PostgreSQL , set-returning functions , SRF , 索引 , 转换 背景 PostgreSQL 函数支持返回多行,定义returns setof type即可。PG内部也内置了蛮多这样的函数,例如 自定义SRF方法如下:...

德哥
2018/10/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

深入理解Spring MVC 思想

目录 一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心流程图 四、spring mvc DispatcherServlet说明 五、spring mvc 父子上下文的说明 六、springMVC-mvc.xml 配置文件片段讲解 ...

呵呵哒灬
50分钟前
1
0
数据库技术-Mysql主从复制与数据备份

数据库技术-Mysql 主从复制的原理: MySQL中数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”...

须臾之余
昨天
12
0
Git远程仓库——GitHub的使用(一)

Git远程仓库——GitHub的使用(一) 一 、 Git远程仓库 由于你的本地仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一下设置: 步骤一、 创建SSH key 在用户主目录下,看看有没有.ss...

lwenhao
昨天
2
0
SpringBoot 整合

springBoot 整合模板引擎 SpringBoot 整合Mybatis SpringBoot 整合redis SpringBoot 整合定时任务 SpringBoot 整合拦截器...

细节探索者
昨天
1
0
第二个JAVA应用

第二个JAVA应用 方法一:配置文件: # cd /usr/local/tomcat/conf/# vim server.xml</Host> <Host name="www.wangzb.cc" appBase="/data/wwwroot/www.wangzb.cc" //引用所......

wzb88
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部