熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

oracle數據庫PL/SQL序列(組圖)

2022-06-13   來源: Oracle 

  序列是Oracle i提供的用於按照設定的規則自動產生數據的方案對象在某些數據表的結構中有些字段需要這種特性比如對於某個學生數據表的學號關鍵字段用戶可以希望在錄入數據時能夠自動在上一個記錄的學號字段上自動加由於Oracle i提供的種基本數據類型並沒有這樣的功能可以通過序列方案對象來實現
  
  序列的創建
  
  下面介紹在【企業管理器】中如何創建序列
  ()在【企業管理器】中選擇【myoraclemynet】/【方案】/【序列】選項單擊鼠標右鍵在出現的快捷菜單裡選擇【創建】選項如圖所示
  
 

  ()出現如圖所示的創建序列的【一般信息】選項卡
  
  在【名稱】文本框裡輸入待定義的序列的名稱TEMPSEQUENCE
  
  在【方案】下拉列表框裡選擇序列所屬的用戶名SCOTT
  
  序列【類型】參數有兩個選項若選擇【升序】單選鈕則表示將創建從初始值向最大值遞增的序列這是創建序列時的默認設置若選擇【降序】單選鈕則表示將創建從初始值向最小值遞減的序列
  
  對【值】可以進行設置的參數如下
  
  在【最小值】文本框裡設置序列允許的最小值創建序列時該字段最初為空如果單擊【創建】按鈕時該字段為空則對升序序列使用默認值 而對降序序列使用默認值
  
  在【最大值】文本框裡設置序列允許的最大值創建序列時該字段最初為空如果單擊【創建】按鈕後該字段為空則將對升序序列使用默認值 而對降序序列使用默認值
  
  在【時間間隔】文本框裡設置遞增序列遞增的間隔數值(升序序列)或遞減序列遞減的間隔數值(降序序列)創建序列時該字段最初為空如果單擊【創建】按鈕後該字段為空將使用默認值該字段只能為正整數
  
  在【初始值】文本框裡設置序列的起始值如果單擊【創建】按鈕後該字段為空對升序序列將使用該序列默認的最小值對降序序列將使用該序列默認的最大值
  
  對【選項】可以設置的參數如下
  
  若選擇【循環值】復選框則表示指定在達到序列最小值或最大值之後序列應繼續生成值對升序序列來說在達到最大值後將生成最小值對降序序列來說在達到最小值後將生成最大值如果未選擇該復選框序列將在達到最小值或最大值後停止生成任何值默認情況下是未選擇狀態
  
  若選擇【排序值】復選框則指定序列號要按請求次序生成默認情況下是未選擇狀態
  
  在【高速緩存】中設置由數據庫預分配並存儲的值的數目參數若選擇【默認值】單選鈕則表示將設置默認值為 默認情況下選擇此選項若選擇【無高速緩存】單選鈕則表示指定不預分配序列值若選擇【大小】單選鈕則表示在文本框裡輸入可接受的值最小值為對循環序列來說該值必須小於循環中值的個數如果序列能夠生成的值數的上限小於高速緩存大小則高速緩存大小將自動改換為該上限數
  
  完成設置後單擊【創建】按鈕
  
  ()成功創建序列後出現如圖所示界面單擊確定按鈕
  
 

  ()讀者也可以在【SQLPlus Worksheet】中執行下列SQL程序創建序列
  ―――――――――――――――――――――――――――――――――――――
  CREATE SEQUENCE SCOTTTEMPSEQUENCE
  INCREMENT BY START WITH
  MAXVALUE E MINVALUE
  NOCYCLE CACHE NOORDER
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\ createsequencesql
  
  序列的使用
  
  下面介紹在向數據表中插入數據時如何使用序列
  
  ()首先為實例建立一個數據表SCOTTSEQUENCE_TABLE為簡化起見該數據表僅包含一個類型為NUMBER的數據列NO
  
  在如圖所示的創建表的【一般信息】選項卡中進行如下設置
  
  在【名稱】文本框中輸入SEQUENCE_TABLE
  
  在【方案】下拉列表框中選擇SCOTT
  
  在【表空間】下拉列表框中選擇USERS
  
  在【名稱】單元格中輸入NO在【數據類型】下拉列表框單元格中選擇NUMBER
  
  完成設置後單擊【創建】按鈕
  
 

  ()讀者也可以在【SQLPlus Worksheet】中執行下列SQL代碼創建數據表SCOTTSEQUENCE_TABLE
  ―――――――――――――――――――――――――――――――――――――
  CREATE TABLE SCOTTSEQUENCE_TABLE (NO NUMBER() NOT NULL)
  TABLESPACE USERS
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\ createsequencetablesql
  
  ()在插入新的記錄時使用剛創建的TEMPSEQUENCE序列來自動產生NO數據列的值在【SQLPlus Worksheet】裡執行下面的SQL代碼執行的結果如圖所示
  ―――――――――――――――――――――――――――――――――――――
  INSERT INTO SCOTTSEQUENCE_TABLE(NO)
  VALUES(SCOTTTEMPSEQUENCENEXTVAL);
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\ insertsequencetablesql
  
  SCOTTTEMPSEQUENCENEXTVAL表分配下一個惟一的可用的序列號
  執行SCOTTTEMPSEQUENCENEXTVAL可以使用SCOTTTEMPSEQUENCE CURRVAL來標識上一個已經存儲的序列值
  ()在【SQLPlus Worksheet】中可以執行查詢數據表SCOTTSEQUENCE_TABLE數據的語句執行結果如圖所示表明序列SCOTTSEQUENCE產生的值已經成功錄入數據表中
  ―――――――――――――――――――――――――――――――――――――
  select * from scottsequence_table;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\ selectsequencetablesql
  
 

  序列的刪除
  
  下面介紹在【企業管理器】中如何刪除序列
  
  ()在創建好的序列SEQUENCE上用單擊鼠標右鍵在出現的快捷菜單裡選擇【移去】選項如圖所示
  
 

  ()出現如圖所示的【刪除序列確認】界面單擊【是】按鈕
  

From:http://tw.wingwit.com/Article/program/Oracle/201311/17301.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.