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

  • 相关阅读:
    使用JDBC连接MySql时出现:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration
    Mysql Lost connection to MySQL server at ‘reading initial communication packet', system error: 0
    mysql-基本命令
    C# 监听值的变化
    DataGrid样式
    C# 获取当前日期时间
    C# 中生成随机数
    递归和迭代
    PHP 时间转几分几秒
    PHP 根据整数ID,生成唯一字符串
  • 原文地址:https://www.cnblogs.com/jiazuzhuzhu/p/8329925.html
Copyright © 2011-2022 走看看