JDBC读取新插入Oracle数据库Sequence值的5种方法
Oracle的sequence实现非常灵活,所以也带来一些易用性问题,如何取到新插入记录生成的sequence值与其它数据库有较大差别,本文详国介绍了5种实现读取新插入记录sequence值的方法。
测试用的数据库脚本:
以上5种方法都可以实现功能,以下是5种方法的优缺点汇总,个人推荐性能要求一般的业务采用第一种方法,性能要求非常高业务采用第五种方法。
方法
| 简介 | 优点 | 缺点 |
方法一 | 先用seq.nextval取出值,然后用转入变量的方式插入 | 代码简单直观,使用的人也最多 | 需要两次sql交互,性能不佳 |
方法二 | 先用seq.nextval直接插入记录,再用seq.currval取出新插入的值 | 可以在插入记录后返回sequence,适合于数据插入业务逻辑不好改造的业务代码 | 需要两次sql交互,性能不佳,并且容易产生并发安全问题 |
方法三 | 用pl/sql块的returning into语法,用CallableStatement对象设置输出参数取到新插入的值 | 只要一次sql交互,性能较好 | 需要采用pl/sql语法,代码不直观,使用较少 |
方法四 | 设置PreparedStatement需要返回新值的字段名,然后用getGeneratedKeys取得新插入的值 | 性能良好,只要一次sql交互 | 只有Oracle10g才支持,使用较少 |
方法五 | returning into语法,用OraclePreparedStatement对象设置输出参数,再用getReturnResultSet取得新增入的值 | 性能最好,因为只要一次sql交互,oracle9i也支持 | 只能使用Oracle jdbc特有的OraclePreparedStatement对象 |
|
|
|
|
作者:叶正盛
日期:2011-10-30
我的新浪微博:http://weibo.com/yzsind
分享到:
相关推荐
在Oracle数据库移植过程中,sequence可能失效,本资源可使失效的sequence重新恢复作用
oracle中sequence介绍及应用
2.1.4 ORACLE的四种状态 25 2.2 SQL*Plus方式的ORACLE数据库启动和关闭 26 2.2.1 启动数据库 26 2.2.2 关闭数据库 26 2.3 svrmgrl方式的ORACLE数据库启动和关闭 28 2.3.1 启动数据库 28 2.3.2 关闭数据库 30 2.4 ...
Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 很有用哦
一、 数据库介绍 1 1.1表是数据库中存储数据的基本单位 1 1.2数据库标准语言 1 1.3数据库(DB) 1 1.4数据库种类 1 1.5数据库中如何定义表 1 1.6 create database dbname的含义 1 1.7安装DBMS 1 1.8宏观上是数据-->...
可以根据oracle数据库中存在的sequence,生成建立语句
教程名称: 【动力节点】Oracle从入门到精通视频教程_数据库实战精讲本套Java视频中讲解了Oracle数据库基础、搭建Oracle数据库环境、SQL*Plus命令行工具的使用、标准SQL、Oracle...-表空间、Oracle数据库常用对象...
2.1.4 ORACLE的四种状态 25 2.2 SQL*Plus方式的ORACLE数据库启动和关闭 26 2.2.1 启动数据库 26 2.2.2 关闭数据库 26 2.3 svrmgrl方式的ORACLE数据库启动和关闭 28 2.3.1 启动数据库 28 2.3.2 关闭数据库 30 2.4 ...
第1章 ORACLE数据库基础知识 1 1.1 产品概述 1 1.1.1 产品简介 1 1.1.2 基本概念 1 1.2 ORACLE系统结构 2 1.2.1 ORACLE物理结构 2 1.2.2 系统全局区 4 1.2.3 进程 6 1.3 存储管理 7 1.3.1 逻辑结构 8 1.3.2 表...
oracle数据库id为uuid类型时自动生成id的工具类,不再依赖sequence自增长
在ORACLE数据库中,序列(SEQUENCE)是使用非常频繁的一个数据库对象,但是有时候会遇到序列(SEQUECNE)跳号(skip sequence numbers)的情形,那么在哪些情形下会遇到跳号呢? 事务回滚引起的跳号 不管序列有...
教你如何使用oracle中的sequence,实现主键自动增长
在sql sever中实现插入数据的自动增长是很容易的,但是在oracle数据库中实现这一操作不是很容易,同时要想在.net中实现获取新插入数据的id,而且不会出现读错的情况,就更显得困难了,为了解决在oracle数据中插入的...
Sql Server 数据库,插入操作时可以设置,自动编号。但是ORACLE 数据库,具有里一个东西SEQUENCE,在这儿介绍
在Oracle数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方。 1、Create Sequence (注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限) CREATE ...
实际值的长度大于了数据库里某个字段允许的最大长度导致的插入失败问题。 常见的场景是oracle sequence自动增长,系统用到一定的时候,sequence的值不断的增大,系统开始报错。 解决方法:更改字段的长度解决 您...
Oracle数据库表序列ID自增生成器的功能是为数据库中的表添加序列和触发器,以便使数据表的主键ID能够随着记录的增加而自动增加。
主要介绍了浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
create sequence seq_users ##创建序列seq_users increment by 1 ## 步长,每次加1 start with 1 ##从1开始 minvalue 1 ##最小值 maxvalue 9999999 ##最大值 order ##确保按照请求次序生成整数 【不常用的设置】....
下面通过本文给大家介绍JDBC4.0操作Oracle中BLOB类型的数据的方法。 需要的jar包 使用ojdbc6.jar 在/META-INF/MANIFEST.MF里可以看到Specification-Version: 4.0 建表 create sequence seq_blobmodel_id start ...