oracle生成流水號


1:用sequence序列生成流水號 

create sequence L_SIGN_IN
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 20;

這里是生成了序列l_sign_in,最小值為1,增量為1,從1開始,最大值為9999999999999999999999999999,緩存為20.

我們可以用l_sign_in.nextval可獲取序列的值。

2:利用日期直接生成 to_char(sysdate,'yyyymmdd')此外還可加上別的字符進行拼接。

例如日志的編號就可以定為LOG||sysdate。

3:特殊的生成方法。現在好多編號都要求可以刪,刪了之后還可以利用,前面根據選項進行拼接。

  for k in 0..99 loop
  n:=to_char(k);
  if k<10 then
    v_lab_no:=trim('10010'||v_dcode||'0'||n);
  else
      v_lab_no:=trim('10010'||v_dcode||n);
  end if;

  select count(*) into v_count from l_lab_def where trim(lab_no)=trim(v_lab_no);
  if v_count!=0 then b:=b+1;

  else
return;
end if;
end loop;

 這里是根絕v_dcode(部門編號)生成一個v_lab_no(實驗室編號),規則是10010加上部門號加上兩位流水號。

這里是用變量k循環出兩位流水號,假設部門編號v_dcode=123,先從0開始,k=0,生成實驗室編號為10010123||'0'||'0'即

v_lab_no=1001012300,然后根據實驗室編號在數據庫檢驗,若已存在該編號,循環k=1,否則return,結束。 有類似問題的

都可以聯系討論。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM