zoukankan      html  css  js  c++  java
  • sql 自动生成编号函数

    下面是一个用sql生成自动编号的函数,希望对大家有帮助。。
    /**
       PoNumber----函数名
       pono---- 字段名
       po---表名字

    **/

    create  function PoNumber(@a datetime) returns varchar(50)
    begin
       declare @id varchar(50),@i int
       select top 1 @id=pono from dbo.po where left(pono,8)= convert(varchar(8),@a,112)  order by pono desc
       if @@rowcount=0
          return convert(varchar(8),@a,112)+'001'
       set @i= rtrim(right(@id,3))  +1
       set @id=rtrim(@i)
       return convert(varchar(8),@a,112)+right( '000'+@id ,3 )
    end

    效果如下

    第二种 根据每天时间,不同类型,编号新的一天从0001开始

    如下

    Create procedure [dbo].[SP_NumberingRule](
    @HeadType nvarchar(50)
    )
    as

    begin
    --定义变量
    declare @Puid varchar(50) --唯一uid
    declare @i int
    declare @Big varchar(100) --结尾自增编号 0001
    declare @Date VARCHAR(100) --当前时间 八位数日期
    declare @Letter varchar(100) --字母开头 DJBH
    declare @Centretime varchar(100) --中间时间 20180110
    declare @Dudate varchar(100) --赋值时间,使用
    DECLARE @Mcount VARCHAR(50)

    set @Date = CONVERT(varchar(8) , getdate(), 112 ) --当前时间

    ---开启事务
    BEGIN TRAN

    select top 1 @Puid = Uid, @Letter = CharacterFormat,@Dudate=StDatetime , @Big = DigitFormat,@Centretime= StDatetime , @Mcount = Conbination from BasicsManage B where B.name = @HeadType --获取编号规则

    begin

    --如果当前时间大于表中字段时间
    if (@Date> @Dudate)
    begin
    set @i= rtrim(@Big) +1
    set @Big= rtrim(@i) --编号从0000开始递增
    set @Mcount = @Letter + @Date + right(REPLICATE('0',4) + rtrim(@Big),4)
    UPDATE BasicsManage SET Conbination = @Mcount ,StDatetime = @Date where Uid = @Puid and Name = @HeadType
    end

    else
    begin
    print(@Mcount)
    set @Big=rtrim(right(@Mcount,4)) +1 --原来基础上自增
    set @Mcount = @Letter + @Date + right(REPLICATE('0',4) + rtrim(@Big),4)
    UPDATE BasicsManage SET Conbination = @Mcount ,StDatetime = @Date where Uid = @Puid and Name = @HeadType
    end

    end

    begin
    commit tran; --执行成功将会添加数据
    SELECT @Mcount
    end
    end

  • 相关阅读:
    去除inline-block元素间间隙的几种方法
    数组去重的几种方法
    CSS实现水平居中的几种方法
    CSS实现垂直居中的几种方法
    实现一个jQuery的API
    jQuery从入门到放弃
    JavaScript中的DOM与BOM
    JavaScript中的原型与原型链
    爬取某东娃娃评价,生成词云
    vm提示:如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。
  • 原文地址:https://www.cnblogs.com/jiazuzhuzhu/p/8329925.html
Copyright © 2011-2022 走看看