- 浏览: 126437 次
- 来自: ...
最近访客 更多访客>>
文章分类
最新评论
-
dwangel:
给messageSource设置属性
<property ...
Spring i18n的better practice(相对于appfuse) -
dwangel:
spring 的message tag有一个属性text,可以 ...
Spring i18n的better practice(相对于appfuse) -
sn201:
awk高级篇
有问题啊!有问题!有问题!有问题!有问题!
i ...
awk文本处理总结(入门,中级,高级) -
happy_javaboy:
...
Log4j日志管理系统简单使用说明
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的VALUES中
- UPDATE 的 SET中
可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
SELECT empseq.currval FROM DUAL;
但是要注意的是:
- 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白?
- 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。
2、Alter Sequence
你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create .
Alter sequence 的例子
ALTER SEQUENCE emp_sequence
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000后从头开始
NOCACHE ;
影响Sequence的初始化参数:
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
可以很简单的Drop Sequence
DROP SEQUENCE order_seq;
-------------------------------------
drop sequence SEQ_GROUP_ID
-- Create sequence
create sequence SEQ_GROUP_ID
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
cache 20;
select seq_group_id.nextval from dual
-------------------------------------
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的VALUES中
- UPDATE 的 SET中
可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
SELECT empseq.currval FROM DUAL;
但是要注意的是:
- 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白?
- 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。
2、Alter Sequence
你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create .
Alter sequence 的例子
ALTER SEQUENCE emp_sequence
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000后从头开始
NOCACHE ;
影响Sequence的初始化参数:
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
可以很简单的Drop Sequence
DROP SEQUENCE order_seq;
-------------------------------------
drop sequence SEQ_GROUP_ID
-- Create sequence
create sequence SEQ_GROUP_ID
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
cache 20;
select seq_group_id.nextval from dual
-------------------------------------
发表评论
-
Oracle性能调优-优化排序操作
2010-08-07 11:37 1182关于Oracle 10g性能方面,谈论最多的就是新的自动工作负 ... -
Oracle中的外连接简单介绍
2006-08-11 09:53 552在讲外连接之前,先举例介绍内连接,也就是一般的相等连接。 s ... -
SQLServer和Oracle常用函数对比
2006-08-11 09:55 359SQLServer和Oracle是大家经常用到的数据库,在此感 ... -
Oracle SQL 内置函数大全
2006-08-24 10:37 550... -
Oracle PL/SQL入门之慨述
2006-09-05 21:14 534一、PL/SQL出现的目的 结构化查询语言(Structur ... -
Oracle:PL/SQL 中如何使用Array
2006-09-18 20:41 644因为在PL/SQL 中并没有数 ... -
java高级编程:基于JNDI的应用开发
2006-10-02 18:08 592基于JNDI的应用开发 ... -
开源技术之Tomcat数据源配置总结
2006-10-06 14:55 604成功配置环境Tomcat5.0.28+ ... -
Java调用存储过程
2006-10-11 14:22 623摘要:本文阐述了怎 ... -
JNDI配置原理详解
2006-10-11 14:55 677最近写书,写到JNDI,到 ... -
oracle系统表查询
2007-07-30 17:03 574数据字典dict总是属于Ora ... -
JOB
2007-09-04 17:42 446var jobno number begin sys.db ... -
网络收集:PLSQL常用方法汇总
2007-10-18 14:03 740网络收集:PLSQL常用方法汇总 在SQLPLUS下,实现中- ... -
oracle pl/sql 创建同义词
2007-10-24 11:05 1367CREATE OR REPLACE Procedure Cre ... -
索引分析和比较
2007-11-21 10:20 740转自:http://tb.blog.csdn.net/Trac ... -
ORACLE索引与高性能SQL介绍
2007-11-21 15:05 491转自:http://blog.csdn.net/annicyb ... -
oracle动态游标的简单实现方法
2008-05-27 09:17 768下面就是例子程序 --明细表打印予处理 通用报表: pro ... -
Oracle触发器
2008-05-27 15:22 632是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用 ... -
Oracle体系结构之-Oracle中各种名称
2008-05-31 15:18 796一、数据库名 数据 ... -
数据库设计准则(第一、第二、第三范式说明)
2009-01-04 11:53 627I、关系数据库设计范式介绍 1.1 第一范式(1NF)无重复的 ...
相关推荐
Oracle 创建自增字段方法-ORACLE SEQUENCE 的简单介绍 Oracle SEQUENCE 是一种特殊的数据库对象,用于生成一系列唯一的数值,通常用于主键或其他需要唯一标识的字段。下面将详细介绍 Oracle 创建自增字段方法-...
下面将详细介绍如何通过SQL脚本来重置Sequence,使其恢复正常功能。 ### SQL脚本实现 首先,我们定义了一个函数`func_getseq`,该函数接受一个表名作为参数,并返回该表主键的最大值。然后,我们使用一个PL/SQL块...
### Sequence简单介绍 #### 序列(Sequence)概念解析及应用 序列(Sequence)是一种用于生成一系列数值的数据对象,常用于数据库系统中为主键提供自动递增的功能。本篇文章主要聚焦于Oracle数据库与SQL Server...
先假设有这么一个表: 代码... 在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREAT
同义词(Synonym)在Oracle中是一种数据库对象的别名,可以为序列创建同义词,使得在不同的模式或者远程数据库之间共享序列变得简单。例如: ```sql CREATE PUBLIC SYNONYM SEQ_PUBLIC FOR SCHEMA_NAME.SEQ_TEST; ``...
sequence-generator简介类似于oracle的sequence,但更加强大支持分布式环境下sequence的生成使用乐观锁和AtomicLong确保sequence的唯一性使用及其简单db scriptCREATE TABLE sequence_database.sequence ( name ...
以下是一个简单的例子,展示了如何在存储过程中使用Sequence生成用户ID: ```plsql CREATE OR REPLACE PROCEDURE INSERT_USER ( p_username IN VARCHAR2, p_email IN VARCHAR2, p_user_id OUT NUMBER) AS BEGIN ...
本篇文章将详细介绍Oracle如何创建、使用、修改以及删除自增字段所用到的SEQUENCE。 首先,创建一个Oracle序列(SEQUENCE)可以使用`CREATE SEQUENCE`语句。例如,创建名为`S_S_DEPART`的序列: ```sql CREATE ...
以下将详细介绍两种重置Oracle Sequence的方法。 方法一: ```sql DECLARE n NUMBER(10); tsql VARCHAR2(100); p_seqName varchar2(20); BEGIN p_seqName := 'SEQ_RUN_ID'; EXECUTE IMMEDIATE 'SELECT ' ...
在SQL Server中,为了模拟Oracle的Sequence功能,我们需要利用数据库中的特定机制来生成唯一的序列号。Oracle的Sequence是一种对象,可以自动地返回一个唯一的整数序列,通常用于生成主键值。而在SQL Server中,我们...
- 开发工具:常用的Oracle开发工具介绍。 2. **Oracle+Hibernate应用实例**: - Hibernate简介:了解Hibernate框架的基本概念。 - Oracle与Hibernate集成:如何将Oracle数据库与Hibernate框架结合使用。 - 实例...
### Oracle Sequence 的详细介绍 #### 1. 创建序列(Create Sequence) 在创建序列时,除了上面提到的基本选项外,还有一些其他选项可以帮助更好地管理序列。 **示例命令:** ```sql CREATE SEQUENCE emp_...
2. 完整的简单例子:这部分内容通过一系列步骤介绍了创建一个简单的ODI集成项目,从环境准备、资料库创建、物理和逻辑体系结构搭建,到创建项目、模型、接口、包、方案,并最终运行接口和监控会话状态。 3. 最常用...
本文将介绍一种利用简单SQL语句来实现Oracle数据库分页的方法,这种方法不依赖于复杂的PL/SQL过程或函数,而是通过SQL查询的巧妙设计来达到目的。 ### 分页公式的原理 在Oracle中,分页查询通常涉及到对结果集进行...
在数据库领域中,不同数据库管理系统(DBMS)之间存在显著差异,比如Oracle与MySQL在处理序列(sequence)的方式上就有本质的不同。Oracle提供了内置的支持来管理自动递增的数字序列,而MySQL并没有原生支持序列这一特性...
在Oracle中创建一个序列(sequence)非常简单,只需要执行一条SQL语句即可。例如,为`DEPARTMENT`表创建一个名为`DEPARTMENT_ID_SEQ`的序列,其最小值设为10000,最大值设为极大的数字,增量为1,并且不循环: ```sql...