ORACLE 自动产生流水号方法

上传人:飞*** 文档编号:39949298 上传时间:2018-05-21 格式:DOC 页数:2 大小:36KB
返回 下载 相关 举报
ORACLE 自动产生流水号方法_第1页
第1页 / 共2页
ORACLE 自动产生流水号方法_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《ORACLE 自动产生流水号方法》由会员分享,可在线阅读,更多相关《ORACLE 自动产生流水号方法(2页珍藏版)》请在金锄头文库上搜索。

1、ORACLE 自動產生流水號方法: 我想各位在設計 TABLE 時,應該都曾想在資料表中,設計一個流水號欄位,以 便加快 SQL 執行效能;亦或者應付不同狀況、類型想做歸類方便查詢使用。但 Oracle 流水編號又不向 ACCESS 和 MS-SQL 等資料庫有提供自動編號功能。也 因為 Oracle 沒有自動編號功能,若想編流水號的話往往都要搭配 Trigger 來使 用。以下就介紹幾種流水編號方式: 1. Sequence:適合對流水號無特別需求時使用。Create Sequence Seq_MarsTestMINVALUE 1MAXVALUE 9999999999999999999999

2、99999START WITH 1INCREMENT BY 1CACHE 20; 參數說明如下 :SequenceObjectName : 循序物件名稱MinValue : 最小值MaxValue : 最大值Increment By : 每次增加Start With : 從多少開始Nocache : 不快取Cycle : 當取至最大值後, 是否循環再由最小值開始 做法 在 TRIGGER 中新增 AFTER INSERT 使用以下 SQL 擷取編號後塞入 TABLE.流水號欄。SELECT Seq_MarsTest.nextval FROM dual; 2. TABLE:若對流水號有特殊需求時

3、使用。 就是另開一個 TABLE 去紀錄和設定目前流水編號。 新增 TABLE 格式舉例如下(依需求去設計):做法一樣在 TRIGGER 中新增 AFTER INSERT 依照狀況抓取單別和目前已使用 的號碼+1 判斷碼長補到 TABLE.流水號欄位。 3. 簡易編號簡易編號:此方法也是我最愛使用的方法。不僅可做特殊需求編號又不用另外建立 Sequence 或 Table 做法又簡單只要使用 Query 查詢即可達成。以下範例說明:SELECT G|(NVL(MAX(SUBSTR(ACK_ID,2,14),TO_CHAR(SYSDATE,YYYYMMDD)|0000 00)+1) FROM T

4、ABLE_TEMPLATEWHERE SUBSTR(ACK_ID,2,8)=TO_CHAR(SYSDATE,YYYYMMDD) Output :上述方法的編碼模式為”G”為單別後 8 碼為年月日再加上 8 碼的流水號。以 當日查詢若有查到最大號時就用最大號碼+1 編碼,若無則從(系統年月日)+流水 號開頭(上例為 00000000)+1,當然也可從 10 號或 1000 號開始或者加 2 加 3 跳號 方式編碼。寫到這我想各位一定會提出一個疑問在 Trigger 中是無法對本身 Table 進行 Query 的。沒錯,不可以!但有解套方式:就是使用 PRAGMA AUTONOMOUS_TRANSACTION (不會使用的人就自行搜尋吧!在這不做冗長的 解說)即可在 Trigger 中搜尋自身 Table 來達成。以上我都只是稍做介紹舉例。若有做法上不清楚或不明白的地方煩請自行去 搜尋資料,當完成後你的成就感會比平常多兩倍的!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号