在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。

創(chuàng)新互聯(lián)主營日喀則網站建設的網絡公司,主營網站建設方案,app軟件開發(fā),日喀則h5小程序制作搭建,日喀則網站營銷推廣歡迎日喀則等地區(qū)企業(yè)咨詢
1、createsequence
你首先要有createsequence或者createanysequence權限,
createsequenceemp_sequence
incrementby1--每次加幾個
startwith1--從1開始計數(shù)
nomaxvalue--不設置最大值
nocycle--一直累加,不循環(huán)
cache10;
一旦定義了emp_sequence,你就可以用currval,nextval
currval=返回sequence的當前值
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會自動增加你定義的incrementby值,然后返回增加后的值。currval總是返回當前sequence的值,但是在第一次nextval初始化之后才能使用currval,否則會出錯。一次nextval會增加一次sequence的值,所以如果你在同一個語句里面使用多個nextval,其值就是不一樣的。明白?
-如果指定cache值,oracle就可以預先在內存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動再取一組到cache。使用cache或許會跳號,比如數(shù)據(jù)庫突然不正常down掉(shutdownabort),cache中的sequence就會丟失.所以可以在createsequence的時候用nocache防止這種情況。
2、altersequence
你或者是該sequence的owner,或者有alteranysequence權限才能改動sequence.可以alter除start至以外的所有sequence參數(shù).如果想要改變start值,必須dropsequence再re-create.
altersequence的例子
altersequenceemp_sequence
incrementby10
maxvalue10000
cycle--到10000后從頭開始
nocache;
影響sequence的初始化參數(shù):
sequence_cache_entries=設置能同時被cache的sequence數(shù)目。
可以很簡單的dropsequence
dropsequenceorder_seq;
一般用PLSQL導入或導出序列即可。
1、用PLSQL登錄oracle數(shù)據(jù)庫。
2、在左邊的樹找到Sequences選項。
3、依次點擊Sequences旁邊的小箭頭-要導出的序列名處右鍵-DBMS元數(shù)據(jù)-DDL。
4、然后將彈出頁面的內容復制即可。
5、導出完成。
6、要導入的話,登錄到目標庫。
7、點擊左上角類似小紙片的按鈕,選擇SQL窗口。
8、把復制的語句粘貼到空白出,選中,點擊上方類似齒輪的按鈕,導入完成。
創(chuàng)建序列
CREATE SEQUENCE SEQUENCE_NAME
START WITH 10
INCREMENT BY 10
MAXVALUE 2000
MINVALUE 10
NOCYCLE
CACHE 10
?通過序列的偽列來訪問序列的值
–SEQUENCE_NAME.NEXTVAL
返回序列的下一個值
–SEQUENCE_NAME.CURRVAL
返回序列的當前值
實現(xiàn)思路:將主鍵設置為序列,自后每次按照固定規(guī)則增加相應的數(shù)字即可。
1、首先要有create sequence或者create any sequence權限,
create sequence emp_sequence
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數(shù)
NOMAXVALUE -- 不設置最大值
NOCYCLE -- 一直累加,不循環(huán)
CACHE 10;
2、插入到表中,
INSERT INTO emp VALUES
(emp_sequence .nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
序列是一數(shù)據(jù)庫對象,利用它可生成唯一的整數(shù)。一般使用序列自動地生成主碼值。一個序列的值是由特殊的Oracle程序自動生成,因此序列避免了在應用層實現(xiàn)序列而引起的性能瓶頸。
Oracle序列允許同時生成多個序列號,而每一個序列號是唯一的。當一個序列號生成時,序列是遞增,獨立于事務的提交或回滾。允許設計缺省序列,不需指定任何子句。該序列為上升序列,由1開始,增量為1,沒有上限。
具體步驟
1.建立序列命令
CREATE SEQUENCE [user.]sequence_name
[increment by n]
[start with n]
[maxvalue n | nomaxvalue]
[minvalue n | nominvalue]
INCREMENT BY: 指定序列號之間的間隔,該值可為正的或負的整數(shù),但不可為0。序列為升序。忽略該子句時,缺省值為1。
START WITH:指定生成的第一個序列號。在升序時,序列可從比最小值大的值開始,缺省值為序列的最小值。對于降序,序列可由比最大值小的值開始,缺省值為序列的最大值。
MAXVALUE:指定序列可生成的最大值。
NOMAXVALUE:為升序指定最大值為1027,為降序指定最大值為-1。
MINVALUE:指定序列的最小值。
NOMINVALUE:為升序指定最小值為1。為降序指定最小值為-1026。
2.更改序列命令
ALTERSEQUENCE [user.]sequence_name
[INCREMENT BY n]
[MAXVALUE n| NOMAXVALUE ]
[MINVALUE n | NOMINVALUE];
修改序列可以:
修改未來序列值的增量。
設置或撤消最小值或最大值。
改變緩沖序列的數(shù)目。
指定序列號是否是有序。
刪除序列命令
DROP SEQUENCE [user.]sequence_name;
從數(shù)據(jù)庫中刪除一序列。
創(chuàng)建一個序列號的語句:
中國網管聯(lián)盟bitsCN.com
CREATE SEQUENCE EXAM_NO_SEQ
START WITH 1484
MAXVALUE 9999999999
MINVALUE 1
CACHE 20
NOORDER;
PB中取序列號的用法:
string ?v_exam_no
SELECT exam_no_seq.nextval INTO :v_exam_no FROM dual
using ghis_database;
if ghis_database.SQLCODE0 then
messagebox("","取檢查序號出錯")
return
end if
分享文章:oracle序列怎么用,oracle序列怎么使用
標題網址:http://chinadenli.net/article44/phehhe.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、ChatGPT、面包屑導航、服務器托管、定制網站、手機網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)