PL/SQL序列

來源:互聯網
上載者:User


 
    序列是Oracle 9i提供的用於按照設定的規則自動產生資料的方案對象。在某些資料表的結構中,有些欄位需要這種特性。比如,對於某個學生資料表的學號關鍵字段,使用者可以希望在錄入資料時,能夠自動在上一個記錄的學號欄位上自動加1等。由於Oracle 9i提供的16種基礎資料型別 (Elementary Data Type)並沒有這樣的功能,可以通過序列方案對象來實現。

序列的建立

    下面介紹在【企業管理器】中如何建立序列。
    (1)在【企倒芾砥鼇恐醒≡瘛緈yoracle.mynet】/【方案】/【序列】選項,單擊滑鼠右鍵,在出現的捷徑功能表裡選擇【建立】選項,如圖9.48所示。

    (2)出現如圖9.49所示的建立序列的【一般資訊】選項卡。
    在【名稱】文字框裡輸入待定義的序列的名稱“TEMPSEQUENCE”。
    在【方案】下拉式清單方塊裡選擇序列所屬的使用者名稱“SCOTT”。
    序列【類型】參數有兩個選項。若選擇【升序】單選鈕,則表示將建立從初始值向最大值遞增的序列,這是建立序列時的預設設定;若選擇【降序】單選鈕,則表示將建立從初始值向最小值遞減的序列。
    對【值】可以進行設定的參數如下。
    在【最小值】文字框裡設定序列允許的最小值。建立序列時該欄位最初為空白。如果單擊【建立】按鈕時該欄位為空白,則對升序序列使用預設值 1,而對降序序列使用預設值 -1026。
    在【最大值】文字框裡設定序列允許的最大值。建立序列時該欄位最初為空白。如果單擊【建立】按鈕後該欄位為空白,則將對升序序列使用預設值 1027,而對降序序列使用預設值-1。
    在【時間間隔】文字框裡設定遞增序列遞增的間隔數值(升序序列)或遞減序列遞減的間隔數值(降序序列)。建立序列時該欄位最初為空白,如果單擊【建立】按鈕後該欄位為空白,將使用預設值1,該欄位只能為正整數。
    在【初始值】文字框裡設定序列的起始值。如果單擊【建立】按鈕後該欄位為空白,對升序序列將使用該序列預設的最小值,對降序序列將使用該序列預設的最大值。
    對【選項】可以設定的參數如下。
    若選擇【迴圈值】複選框,則表示指定在達到序列最小值或最大值之後,序列應繼續產生值。對升序序列來說,在達到最大值後將產生最小值。對降序序列來說,在達到最小值後將產生最大值。如果未選擇該複選框,序列將在達到最小值或最大值後停止產生任何值。預設情況下是未選擇狀態。
    若選擇【排序值】複選框,則指定序號要按請求次序產生,預設情況下是未選擇狀態。
    在【快取】中設定由資料庫預分配並儲存的值的數目參數。若選擇【預設值】單選鈕,則表示將設定預設值為 20,預設情況下選擇此選項;若選擇【無快取】單選鈕,則表示指定不預分配序列值;若選擇【大小】單選鈕,則表示在文字框裡輸入可接受的值,最小值為2,對迴圈序列來說,該值必須小於迴圈中值的個數。如果序列能夠產生的值數的上限小於快取大小,則快取大小將自動改換為該上限數。
    完成設定後單擊按鈕。
    (3)成功建立序列後,出現如圖9.50所示介面。單擊“確定”按鈕。

    (3)讀者也可以在【SQLPlus Worksheet】中執行下列SQL程式建立序列。
    ―――――――――――――――――――――――――――――――――――――
    CREATE SEQUENCE "SCOTT"."TEMPSEQUENCE"
        INCREMENT BY 1 START WITH 1
        MAXVALUE 1.0E28 MINVALUE 1
        NOCYCLE CACHE 20 NOORDER
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\ createsequence.sql。

序列的使用

    下面介紹在向資料表中插入資料時如何使用序列。
    (1)首先為執行個體建立一個資料表“SCOTT.SEQUENCE_TABLE”,為簡化起見,該資料表僅包含一個類型為“NUMBER”的資料列“NO”。
    在如圖9.51所示的建立表的【一般資訊】選項卡中進行如下設定。
    在【名稱】文字框中輸入“SEQUENCE_TABLE”。
    在【方案】下拉式清單方塊中選擇“SCOTT”。
    在【資料表空間】下拉式清單方塊中選擇“USERS”。
    在【名稱】儲存格中輸入“NO”,在【資料類型】下拉式清單方塊儲存格中選擇“NUMBER”。
    完成設定後單擊按鈕。

    (2)讀者也可以在【SQLPlus Worksheet】中執行下列SQL代碼建立資料表“SCOTT.SEQUENCE_TABLE”。
    ―――――――――――――――――――――――――――――――――――――
    CREATE TABLE "SCOTT"."SEQUENCE_TABLE" ("NO" NUMBER(10) NOT NULL)
        TABLESPACE "USERS"
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\ createsequencetable.sql。
    (3)在插入新的記錄時,使用剛建立的“TEMPSEQUENCE”序列來自動產生“NO”資料列的值。在【SQLPlus Worksheet】裡執行下面的SQL代碼,執行的結果如圖9.52所示。
    ―――――――――――――――――――――――――――――――――――――
    INSERT INTO SCOTT.SEQUENCE_TABLE(NO)
    VALUES(SCOTT.TEMPSEQUENCE.NEXTVAL);
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\ insertsequencetable.sql。
    “SCOTT.TEMPSEQUENCE.NEXTVAL”表分配下一個惟一的、可用的序號。
    執行“SCOTT.TEMPSEQUENCE.NEXTVAL”後,可以使用“SCOTT.TEMPSEQUENCE. CURRVAL”來標識上一個已經儲存的序列值。
    (4)在【SQLPlus Worksheet】中可以執行查詢資料表“SCOTT.SEQUENCE_TABLE”資料的語句。執行結果如圖9.53所示,表明序列“SCOTT.SEQUENCE”產生的值已經成功錄入資料表中。
    ―――――――――――――――――――――――――――――――――――――
    select * from scott.sequence_table;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\ selectsequencetable.sql。


序列的刪除

    下面介紹在【企業管理器】中如何刪除序列。
    (1)在建立好的序列“SEQUENCE1”上用單擊滑鼠右鍵,在出現的捷徑功能表裡選擇【移去】選項,如圖9.54所示。

    (2)出現如圖9.55所示的【刪除序列確認】介面,單擊按鈕。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。