重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。
成都创新互联专注于平谷企业网站建设,成都响应式网站建设,商城网站定制开发。平谷网站建设公司,为平谷等地区提供建站服务。全流程按需求定制制作,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
1、Create Sequence
首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。
创建语句如下:
CREATE SEQUENCE seqTest
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
2、得到Sequence值
定义好sequence后,你就可以用currVal,nextVal取得值。
CurrVal:返回 sequence的当前值
NextVal:增加sequence的值,然后返回 增加后sequence值
得到值语句如下:
SELECT Sequence名称.CurrVal FROM DUAL;
如得到上边创建Sequence值的语句为:
select seqtest.currval from dual
在Sql语句中可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- INSERT语句的values中
- UPDATE 的 SET中
如在插入语句中
insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入测试');
注:
第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。
CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使CURRVAL,否则会出错。
采用sequence,这是oracle提供的序列对象,只要创建了sequence以后就可以通过select sequencename.nextval from dual 就可以得到唯一的序列值了
您好,很高兴为您解答。
public class SeqManager {
protected String dataSource = "java:/OracleDS";
public SeqManager() {
}
/**
* 从数据库连接中取的一连接
*
* @param String dataSource 为数据源JNDI
*
*
* 返回值为数据库连接
*
*/
protected Connection getConnection(String dataSource)
{
Connection con = null;
try
{
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup(dataSource);
con = ds.getConnection();
System.out.println("connection is :" + con);
// con.setAutoCommit(false);
} catch(NamingException e)
{
String err = "连接数据库时出错:找不到JNDI名称" + dataSource;
System.out.println(e);
e.printStackTrace();
} catch (SQLException ex)
{
String err = "连接数据库时出错:创建不了数据库连接";
System.out.println(ex);
ex.printStackTrace();
}
return con;
}
/**
* 取Sequence的公共方法
*
* @param String sql 为传进的SQL语句
*
*
* 返回值为Sequence值
*
*/
protected Long getNextValOfSeq(String sql) throws SQLException
{
Connection con = getConnection(dataSource);
PreparedStatement pst = con.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
try
{
if (rs.next()) {
return new Long(rs.getLong(1));
}
else {
return null;
}
}catch(SQLException e)
{
throw e;
}finally
{
rs.close();
pst.close();
con.close();
}
}
public Long getNextValOfStudEntrScore() throws SQLException
{
String sql = " Select SeqStudEntrScore.NextVal From Dual ";
try
{
return getNextValOfSeq(sql);
}catch (SQLException e)
{
String errorMessage = "取***Sequence时出错.";
e.printStackTrace();
throw new SQLException(errorMessage);
}
}
}
在jsp里调用这个javaBean
jsp就是一个servlet
操作数据库没什么区别
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
oracle表中创建序列语法:
CREATE SEQUENCE name
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
示例:
increment by n:表明值每次增长n(步长)。
start with n: 从n开始。
{MAXVALUE n | NOMAXVALUE}: 设置最大值。
{MINVALUE n | NOMINVALUE}: 设置最小值,start with不能小于最小值。
CYCLE | NOCYCLE : 是否循环,建议不使用
CACHE n | NOCACHE : 是否启用缓存。
2、插入数据到表中
示例:
INSERT INTO emp VALUES
(emp_sequence .nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
扩展资料:
sql server数据库里建序列:
alter table cust_info add sequence int
insert into cust_info (sequence)
select row_number() over(order by cust_id) as cust_id_seq from cust_info
select 序列名.nextval from 视图名 where 相关条件.
序列只要是库中的都能用序列名.nextval 取出包含过程、函数、包、表、视图。