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,结束。 有类似问题的

都可以联系讨论。

 

转载于:https://www.cnblogs.com/devin818/p/5262600.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值