• 用存储过程生成记录编号


     

    CREATE procedure up_GetBeautifulOrderNumber(@orderNumber char(12) out)
    as
    begin
    declare @number char(11)--编号的后11位
    declare @maxDate decimal--从数据库表中当前最大的编号中取出的日期
    declare @currentDate decimal    --当前日期
    declare @currentNumber char(12--数据库表中当前最大的编号
    declare @day char(2--当前日期,如果是一位数,需要将其转换为两位数
    set @day=(select case len(datename(d,getdate())) 
     
    when 1 then '0'+ cast(datename(d,getdate()) as char(1))
     
    when 2 then cast(datename(d,getdate()) as char(2)) end)
    set @currentDate=cast((datename(yyyy,getdate())+datename(mm,getdate())+ @dayas decimal)
    if not exists(select top 1 OrderID from Orders order by OrderID desc)
    begin
     
    set @number=cast((@currentDate *1000as char(11))
    end
    else 
    begin
      
    set @currentNumber=(select top 1 OrderID from Orders order by OrderID desc)
      
    set @maxDate=cast(substring(@currentNumber2,8as decimal)
      
    if @maxDate<@currentDate 
        
    begin
     
    set @number=cast(@currentDate *1000 as char(11))
        
    end
      
    else if @maxDate=@currentDate
        
    begin
     
    set @number=cast((cast(substring(@currentNumber,2,12as decimal)+1as char(11))
        
    end
      
    else 
        
    begin
     
    print @maxDate
     
    declare @errMessage varchar(100)
     
    set @errMessage=cast(@maxDate as char(10))+ '错误,数据库表中纪录的最大日期有错误,请与数据库管理员联系。'
     
    raiserror(@errMessage161
        
    end
    end
       
    set @orderNumber='B'+@number
    end 
  • 相关阅读:
    P2437 蜜蜂路线题解
    P1044 栈题解
    P1002 过河卒题解
    P1433 吃奶酪题解
    组合数公式
    P1036 选数题解
    十进制转二进制方法整理
    golang学习笔记 ---工作区与GOPATH
    golang学习笔记---闭包
    golang学习笔记---类型
  • 原文地址:https://www.cnblogs.com/jiangshaofen/p/711772.html
Copyright © 2020-2023  润新知