oracle怎么存儲(chǔ)序列 oracle序列的使用

在oracle存儲(chǔ)過程中建立序列

序列主要是用來生成固定的編號(hào)的,如:每次遞增一即可。

成都創(chuàng)新互聯(lián)公司是專業(yè)的杭錦網(wǎng)站建設(shè)公司,杭錦接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行杭錦網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

create sequence SEQ_ID

minvalue 1

maxvalue 99999999

start with 1

increment by 1

cache 30

cycle;

之后執(zhí)行:

insert into tab (auto_id) values (SEQ_ID.Nextval);

備注:sequence 是一個(gè)自增長(zhǎng)的序列,每次調(diào)用nextval的時(shí)候會(huì)自動(dòng)增加,可以定義起始值,最大值,增量,cycle是表示循環(huán),即到最大值后從起始值重新開始。 每次執(zhí)行都是會(huì)自增的。

如何使用Oracle序列

如何使用Oracle序列:

Oracle序列(sequence)是一種數(shù)據(jù)庫項(xiàng),能夠生成一個(gè)整數(shù)序列。通常用于填充數(shù)字類型的主鍵列。

1、創(chuàng)建序列:

CREATE SEQUENCE sequence_name

[START WITH start_num]

[INCREMENT BY increment_num]

[{MAXVALUE maximum_num|NOMAXVALUE}]

[{MINVALUE minimum_num|NOMINVALUE}]

[{CYCLE|NOCYCLE}]

[{CACHE cache_num|NOCACHE}]

[{ORDER|NOORDER}]

其中:

start_num:序列開始整數(shù)

increment_num:每次增加的整數(shù)增量

maximum:序列最大整數(shù)

minimum:序列最小整數(shù)

CYCLE:循環(huán)生成

NOCYCLE:不循環(huán)生成,默認(rèn)值

cache_num:保存在內(nèi)存中的整數(shù)的個(gè)數(shù)

NOCACHE:不緩存任何整數(shù)

例如:

CREATE SEQUENCE seq_test;(默認(rèn)值)

CREATE SEQUENCE seq_test START WITH 1 INCREMENT BY 2;

2、使用序列:

SELECT seq_test.nextval FROM dual;

insert into order_status2 (id) values (seq_test.nextval);

3、修改序列:

ALTER SEQUENCE語句來修改序列??梢孕薷牡膬?nèi)容:

不能修改序列的初值

序列的最小值不能大于當(dāng)前值

序列的最大值不能小于當(dāng)前值

例如:ALTER SEQUENCE seq_test INCREMENT BY 3;

4、刪除序列:

DROP SEQUENCE seq_test;

如何給oracle中的表建一個(gè)序列

在oracle中sequence就是所謂的序列號(hào),每次取的時(shí)候它會(huì)自動(dòng)增加,一般用在需要按序列號(hào)排序的地方。

1、createsequence

你首先要有createsequence或者createanysequence權(quán)限,

createsequenceemp_sequence

incrementby1--每次加幾個(gè)

startwith1--從1開始計(jì)數(shù)

nomaxvalue--不設(shè)置最大值

nocycle--一直累加,不循環(huán)

cache10;

一旦定義了emp_sequence,你就可以用currval,nextval

currval=返回sequence的當(dāng)前值

nextval=增加sequence的值,然后返回sequence值

比如:

emp_sequence.currval

emp_sequence.nextval

可以使用sequence的地方:

-不包含子查詢、snapshot、view的select語句

-insert語句的子查詢中

-nsert語句的values中

-update的set中

可以看如下例子:

insertintoempvalues

(empseq.nextval,'lewis','clerk',7902,sysdate,1200,null,20);

selectempseq.currvalfromdual;

但是要注意的是:

-第一次nextval返回的是初始值;隨后的nextval會(huì)自動(dòng)增加你定義的incrementby值,然后返回增加后的值。currval總是返回當(dāng)前sequence的值,但是在第一次nextval初始化之后才能使用currval,否則會(huì)出錯(cuò)。一次nextval會(huì)增加一次sequence的值,所以如果你在同一個(gè)語句里面使用多個(gè)nextval,其值就是不一樣的。明白?

-如果指定cache值,oracle就可以預(yù)先在內(nèi)存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動(dòng)再取一組到cache。使用cache或許會(huì)跳號(hào),比如數(shù)據(jù)庫突然不正常down掉(shutdownabort),cache中的sequence就會(huì)丟失.所以可以在createsequence的時(shí)候用nocache防止這種情況。

2、altersequence

你或者是該sequence的owner,或者有alteranysequence權(quán)限才能改動(dòng)sequence.可以alter除start至以外的所有sequence參數(shù).如果想要改變start值,必須dropsequence再re-create.

altersequence的例子

altersequenceemp_sequence

incrementby10

maxvalue10000

cycle--到10000后從頭開始

nocache;

影響sequence的初始化參數(shù):

sequence_cache_entries=設(shè)置能同時(shí)被cache的sequence數(shù)目。

可以很簡(jiǎn)單的dropsequence

dropsequenceorder_seq;

如何在oracle存儲(chǔ)過程中drop 序列和新建序列

1、首先要保證該數(shù)據(jù)庫用戶有刪除序列和新建序列的權(quán)限,存儲(chǔ)過程中這個(gè)權(quán)限要顯示賦權(quán):

grant

create

sequence

to

數(shù)據(jù)庫用戶;

grant

drop

any

sequence

to

數(shù)據(jù)庫用戶;

2、存儲(chǔ)過程中創(chuàng)建序列和刪除序列:

創(chuàng)建序列:

execute

immediate

'create

sequence

序列名'

||

chr(10)

||

'minvalue

1'

||

chr(10)

||

'maxvalue

999999999999999999999999999'

||

chr(10)

||

'start

with

1'

||

chr(10)

||

'increment

by

1'

||

chr(10)

||

'cache

20';

刪除序列:

execute

immediate

'drop

sequence

序列名';

oracle 創(chuàng)建的序列在哪里?

在oracle中sequence就是所謂的序列號(hào),每次取的時(shí)候它會(huì)自動(dòng)增加,一般用在需要按序列號(hào)排序的地方。

1、Create Sequence

你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE權(quán)限,

CREATE SEQUENCE emp_sequence

INCREMENT BY 1 -- 每次加幾個(gè)

START WITH 1 -- 從1開始計(jì)數(shù)

NOMAXVALUE -- 不設(shè)置最大值

NOCYCLE -- 一直累加,不循環(huán)

CACHE 10;

一旦定義了emp_sequence,你就可以用CURRVAL,NEXTVAL

CURRVAL=返回 sequence的當(dāng)前值

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會(huì)自動(dòng)增加你定義的INCREMENT BY值,然后返回增加后的值。CURRVAL 總是返回當(dāng)前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否則會(huì)出錯(cuò)。一次NEXTVAL會(huì)增加一次SEQUENCE的值,所以如果你在同一個(gè)語句里面使用多個(gè)NEXTVAL,其值就是不一樣的。明白?

- 如果指定CACHE值,ORACLE就可以預(yù)先在內(nèi)存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動(dòng)再取一組到cache。 使用cache或許會(huì)跳號(hào), 比如數(shù)據(jù)庫突然不正常down掉(shutdown abort),cache中的sequence就會(huì)丟失. 所以可以在create sequence的時(shí)候用nocache防止這種情況。

2、Alter Sequence

你或者是該sequence的owner,或者有ALTER ANY SEQUENCE 權(quán)限才能改動(dòng)sequence. 可以alter除start至以外的所有sequence參數(shù).如果想要改變start值,必須 drop sequence 再 re-create .

Alter sequence 的例子

ALTER SEQUENCE emp_sequence

INCREMENT BY 10

MAXVALUE 10000

CYCLE -- 到10000后從頭開始

NOCACHE ;

影響Sequence的初始化參數(shù):

SEQUENCE_CACHE_ENTRIES =設(shè)置能同時(shí)被cache的sequence數(shù)目。

可以很簡(jiǎn)單的Drop Sequence

DROP SEQUENCE order_seq;

Oracle中序列sequence用法

) 建立序列命令

CREATE SEQUENCE [user ]sequence_name

[increment by n]

[start with n]

[maxvalue n | nomaxvalue]

[minvalue n | nominvalue];

INCREMENT BY 指定序列號(hào)之間的間隔 該值可為正的或負(fù)的整數(shù) 但不可為 序列為升序 忽略該子句時(shí) 缺省值為

START WITH 指定生成的第一個(gè)序列號(hào) 在升序時(shí) 序列可從比最小值大的值開始 缺省值為序列的最小值 對(duì)于降序 序列可由比最大值小的值開始 缺省值為序列的最大值

MAXVALUE 指定序列可生成的最大值

NOMAXVALUE 為升序指定最大值為 為降序指定最大值為

MINVALUE 指定序列的最小值

NOMINVALUE 為升序指定最小值為 為降序指定最小值為

) 更改序列命令

ALTERSEQUENCE [user ]sequence_name

[INCREMENT BY n]

[MAXVALUE n| NOMAXVALUE ]

[MINVALUE n | NOMINVALUE]

修改序列可以

? 修改未來序列值的增量

? 設(shè)置或撤消最小值或最大值

? 改變緩沖序列的數(shù)目

? 指定序列號(hào)是否是有序

) 刪除序列命令

DROP SEQUENCE [user ]sequence_name

從數(shù)據(jù)庫中刪除一序列

創(chuàng)建一個(gè)序列號(hào)的語句

CREATE SEQUENCE EXAM_NO_SEQ

START WITH

MAXVALUE

MINVALUE

CYCLE

CACHE

NOORDER;

PB中取序列號(hào)的用法

string? v_exam_no

//獲取申請(qǐng)序號(hào)

SELECT exam_no_seq nextval INTO :v_exam_no FROM dual

using ghis_database;

if ghis_database SQLCODE then

messagebox( 取檢查序號(hào)出錯(cuò) )

return

end if

其他版本

oracle中沒有自增類型的字段的 所以通常情況下需要定義一個(gè)sequence來作為自動(dòng)增長(zhǎng)類型字段的數(shù)據(jù)

于是記錄了一些關(guān)于oracle sequence的資料 已備查用!

Oracle中的序列(sequence)

: 如何定義一個(gè)序列

僅向前的數(shù)字變量(和SQL中的自動(dòng)編號(hào)有點(diǎn)像 identity( ) )

格式:

create sequence 序列名稱

start with 起始數(shù)

increment by 增長(zhǎng)量

[maxvalue 值]

[minvalue 值]

[cycle 當(dāng)?shù)竭_(dá)最大值的時(shí)候 將繼續(xù)從頭開始]

[Nocycle 一直累加 不循環(huán)]

[Cache ]

注意

第一次NEXTVAL返回的是初始值;隨后的NEXTVAL會(huì)自動(dòng)增加你定義的INCREMENT BY值 然后返回增加后的值 CURRVAL 總是返回當(dāng)前SEQUENCE的值 但是在第一次NEXTVAL初始化之后才能使用CURRVAL 否則會(huì)出錯(cuò) 一次NEXTVAL會(huì)增加一次SEQUENCE的值

如果指定CACHE值 ORACLE就可以預(yù)先在內(nèi)存里面放置一些sequence 這樣存取的快些 cache里面的取完后 oracle自動(dòng)再取一組到cache 使用cache或許會(huì)跳號(hào) 比如數(shù)據(jù)庫突然不正常down掉(shutdown abort) cache中的sequence就會(huì)丟失 所以可以在create sequence的時(shí)候用nocache防止這種情況

example:

create sequence mySeq

start with

increment by

maxvalue

minvalue

cycle

:怎么去取序列數(shù)據(jù):

currval curenvalue

nextVal NextVlaue

example:

select mySeq nextVal from dual

注意一點(diǎn):currval只有當(dāng)nextVal執(zhí)行一次以后才可以用

在創(chuàng)建表的時(shí)候 可以使用序列

具體例子:

create table 公司基本信息表

(

ComPID int

CompName varchar ( )

)

insert into 公司基本信息表 values(mySeq nextVal AA )

:如何修改序列

修改前提是sequence 的owner 或者有ALTER ANY SEQUENCE 權(quán)限才能改動(dòng)sequence 可以alter除start至以外的所有sequence參數(shù) 如果想要改變start值 必須 drop sequence 再 re create

Alter sequence 的例子

ALTER SEQUENCE emp_sequence

INCREMENT BY

MAXvalue

CYCLE 到 后從頭開始

NOCACHE

影響Sequence的初始化參數(shù)

SEQUENCE_CACHE_ENTRIES =設(shè)置能同時(shí)被cache的sequence數(shù)目

也可以這樣

alter sequence mySeq maxvalue

注意 不能改start with 其他隨便改(設(shè)置minvalue值的時(shí)候不能大于當(dāng)前值)

:如何查看刪除某個(gè)表空間所有序列

查看

select * from user_sequences

如何刪除:

drop sequence 序列名稱

sequence屬于什么對(duì)象

sequence不屬于某個(gè)表 也不屬于某個(gè)字段 sequence僅僅屬于某個(gè)用戶

lishixinzhi/Article/program/Oracle/201311/17518

本文名稱:oracle怎么存儲(chǔ)序列 oracle序列的使用
標(biāo)題路徑:http://www.muchs.cn/article26/hjeejg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、品牌網(wǎng)站制作、品牌網(wǎng)站建設(shè)網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)