Ⅰ 如何使用Oracle序列
如何使用Oracle序列:
Oracle序列(sequence)是一種資料庫項,能夠生成一個整數序列。通常用於填充數字類型的主鍵列。
1、創建序列:
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:序列開始整數
increment_num:每次增加的整數增量
maximum:序列最大整數
minimum:序列最小整數
CYCLE:循環生成
NOCYCLE:不循環生成,默認值
cache_num:保存在內存中的整數的個數
NOCACHE:不緩存任何整數
例如:
CREATE SEQUENCE seq_test;(默認值)
CREATE SEQUENCE seq_test START WITH 1 INCREMENT BY 2;
2、使用序列:
SELECT seq_test.nextval FROM al;
insert into order_status2 (id) values (seq_test.nextval);
3、修改序列:
ALTER SEQUENCE語句來修改序列。可以修改的內容:
不能修改序列的初值
序列的最小值不能大於當前值
序列的最大值不能小於當前值
例如:ALTER SEQUENCE seq_test INCREMENT BY 3;
4、刪除序列:
DROP SEQUENCE seq_test;
Ⅱ oracle 序列
序列(SEQUENCE)是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值(類型為數字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當前值,或使序列增至下一個值。
Ⅲ 關於oracle序列
是的,可以在任意select語句中出現,和任意表欄位一起。
但是,取值會根據記錄數遞增。
比如說你的表中符合條件的記錄數是4筆,序列從1開始
SELECT c_hy_czjl_seq.nextval,FIELD1 from TABLE1
則返回結果為
NEXTVAL FIELD1
---------------
1 VALUE
2 VALUE
3 VALUE
4 VALUE
再次查詢返回結果為
EXTVAL FIELD1
---------------
5 VALUE
6 VALUE
7 VALUE
8 VALUE
Ⅳ oracle 計算兩字元串之間存在的序列和數量的函數
select * from table t where ascii(t.colunm) between ascii('AAA') and ascii('DDD')
Ⅳ 關於oracle 序列值的問題 我有一個序列為41的序列 我使用sql 語句 序列名.nextval 測試生成的下一個id
你的高速緩存大小為20,現在查詢的nextval是32,說明緩存中還存在部分ID,開始於41,是只下次新申請ID,是從41開始,一次申請20個放入內存中,使用nextval時則是一個一個取出來,使用的cash,就是為了提高序列的效率。
Ⅵ oracle 中怎麼計算累計環比
企業商品交易價格指數(Corporate Goods Price Index,簡稱CGPI)是反映國內企業之間物質商品集中交易價格變動的統計指標,是比較全面的測度通貨膨脹水平和反映經濟波動的綜合價格指數。CGPI調查是經國家統計局批准、由中國人民銀行建立並組織實施的一項調查統計制度。CGPI的前身是國內批發物價指數(Wholesale Price Index,簡稱WPI),指數編制始於1994年1月。 WPI七年多的時間序列所描述的我國物價總水平漲落起伏,較客觀地反映了這期間經濟運行變化軌跡,其分類指數也與客觀經濟結構的變化十分吻合,我國投資形勢的階段性變化與農產品、工業消費品供求關系的改變,都在WPI中的投資品價格指數和農產品價格指數、消費品價格指數的變化上得到了印證。WPI對物價形勢判斷和宏觀經濟監測發揮了積極作用,為中央銀行制定、調整貨幣政策提供了全面、及時反映我國幣值穩定狀況的價格指數指標。 近年來,隨著我國市場經濟的發展,經濟結構和市場物流特點都發生了顯著變化,投資品由生產商直接銷售給最終用戶的份額越來越大,而且由於信息與交通事業的迅速發展,消費品流通也具備了「貨進源頭」的條件,中間批發銷售環節越來越少,因而這項價格調查的采價環節客觀上將逐漸趨向於生產商。再者,批發物價指數的「批發」容易混同一般「商品批發」的概念,不能充分體現其綜合價格指數的實質。基於上述考慮,人民銀行決定將「國內批發物價指數」名稱更改為「企業商品交易價格指數」。 企業商品交易價格指數由以下內容構成: 一、價格調查 1.CGPI代表商品樣本。共選擇代表商品791 種,代表規格品為1700個。其價格調查對象范圍:(1)在國內生產並且在國內銷售的物質商品;(2)資產交易如房地產,由於權數巨大且不穩定,不包括在調查范圍之內;(3)某些特殊物質產品如飛機、船舶、武器彈葯等,或很難確定其權重或不能進行連續價格調查的產品,不包括在調查范圍之內。 2.價格調查環節。原則上是商品流通中企業間集中交易的價格,一般是第一次批發商品銷售價格,對於不通過批發環節而直接銷售給用戶的商品,如專用設備等,則調查廠家的出廠價格。 3.商品調查地域范圍。以36個大中城市為重點,承擔70%的價格調查任務;另有200多個中小城市作為補充,承擔30%的價格調查任務。除西藏以外的全國各省、區、直轄市都有CGPI調查布點,報價基點企業約2700個。 4.采價頻度。每月調查代表商品的三個時點(5日、15日、25日)價,或稱上旬價、中旬價、下旬價。 5.目前CGPI報價規模。總采價條數約10500條,平均每條規格品約有6.5條報價。 二、指數分類體系 根據宏觀經濟分析監測的需要,CGPI設計了三種分類,即按國家標准行業、按生產過程、按用途(需求)分類。第一種分類稱為「基本分類」;第二、第三種分類,統稱為「特殊分類」。 1.基本分類。按照國家產業標准劃分為五個層次,分別是部門、行業、商品群、商品、規格品。 2.特殊分類。在企業商品交易價格基本分類的基礎上,又按照商品的生產過程和需求等性質分別做了特殊分類。按生產過程劃分為初級產品、中間產品、最終產品;按需求分為投資品和消費品。消費品既可以分為食品和非食品,又可以分為耐用消費品和非耐用消費品;投資品既可劃分為固定資產投資品和非固定資產投資品,也可劃分為生產用原材料、建設用材料和勞動資料。 三、權數測算 CGPI權重數據的測算,主要依據以下四類統計指標和調查資料:①投入產出表的總產出等指標數據;②工業普查的工業品銷售額數據;③農業統計資料;④調查咨詢資料。 按照國際慣例,CGPI五年更換一次權數。 四、企業商品交易價格指數編制方法 1.企業商品交易價格指數採用指數法處理原始價格數據。即不計算單個商品報告期與基期的平均價,而是對應於該商品每個企業的報價,計算出若干個價格指數,再用這些價格指數的(加權)平均數來表示該商品價格指數。 2.採用幾何平均公式逐層加權平均計算企業商品價格指數。 3.直接計算月環比指數,再推算定基指數和其他滾基指數(季環比、年距指數等 )
關於PPI你可以在網路里搜一下。
Ⅶ Oracle 序列問題
這和序列的cache有關,默認cache為20,也就是每次拿出20個放到內存中,當實例崩潰或者內存清洗後則會發生斷號的情況。如果你想解決這個問題,可以設置序列的cache為1
--------------------------------
在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;
Ⅷ oracle序列
1. oracle的邏輯是,同一會話中,必須先通過NEXTVAL後,才能獲取CURRVAL值
2. 關於跳號,應該是cache的作用
你可以在SQL窗口打出sequence名稱,右鍵-> 屬性,或右鍵->查看,來查看SEQ信息
3. oracle的邏輯sequence是不會rollback的,如果想要改變start值(或當前值),必須 drop sequence 再 re-create .
給你個說明:
CREATE SEQUENCE test_sequence
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數
NOMAXVALUE -- 不設置最大值
NOCYCLE -- 一直累加,不循環
CACHE 10;
一旦定義了test_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的當前值(第一查詢時會報未初始化,調用一次NEXTVAL後可用)
NEXTVAL=增加sequence的值,然後返回 sequence 值
比如:
test_sequence.CURRVAL
test_sequence.NEXTVAL
可以使用sequence的地方:
- 不包含子查詢、snapshot、VIEW的 SELECT 語句
- INSERT語句的子查詢中
- NSERT語句的VALUES中
- UPDATE 的 SET中
Ⅸ oracle中,在不用nextval的情況下,如何得到序列當前值
select your_seq_name.currval from al;
可以得到當前值,且不會增加序列。
不過需要注意的是如果該序列是第一次使用,是不能用currval的,因為還沒初始,必須至少用nextval一次後才能用currval。
Ⅹ 關於oracle資料庫中序列的問題
當序列cache某一段值的時候,序列的最大值已經被改寫了,資料庫重啟後,序列自動從最大值開始繼續向後cache,這樣設計的目的是確保序列值不重復~