用存储过程生成记录编号
生活随笔
收集整理的這篇文章主要介紹了
用存储过程生成记录编号
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
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())+?@day)?as?decimal)
if?not?exists(select?top?1?OrderID?from?Orders?order?by?OrderID?desc)
begin
?set?@number=cast((@currentDate?*1000)?as?char(11))
end
else?
begin
??set?@currentNumber=(select?top?1?OrderID?from?Orders?order?by?OrderID?desc)
??set?@maxDate=cast(substring(@currentNumber,?2,8)?as?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,12)?as?decimal)+1)?as?char(11))
????end
??else?
????begin
?print?@maxDate
?declare?@errMessage?varchar(100)
?set?@errMessage=cast(@maxDate?as?char(10))+?'錯誤,數據庫表中紀錄的最大日期有錯誤,請與數據庫管理員聯系。'
?raiserror(@errMessage,?16,?1)?
????end
end
???set?@orderNumber='B'+@number
end?
轉載于:https://www.cnblogs.com/jiangshaofen/archive/2007/04/13/711772.html
總結
以上是生活随笔為你收集整理的用存储过程生成记录编号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新病毒仿熊猫烧香 利用 Vista系统漏
- 下一篇: 表达对别人的感激之情