利用sql函數(shù)生成不重復(fù)的訂單號(hào)的代碼
更新時(shí)間:2011年12月20日 12:05:17 作者:
利用sql函數(shù)生成不重復(fù)的訂單號(hào)的代碼,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:
ALTER function [dbo].[GetOrderNum](
@ebaystockflag varchar(20)//規(guī)則字母
)
returns varchar(100)
AS
BEGIN
declare @dt CHAR(8)
declare @flag varchar(20)
set @flag='B'+@ebaystockflag
set @dt=CONVERT(CHAR(8),GETDATE(),112)
declare @max varchar(100)
SELECT @max=MAX(OrderNumber)
FROM tb_EbayOrder WITH(XLOCK,PAGLOCK)
WHERE OrderNumber like @flag+'%'
set @max=isnull(@max, @flag+@dt+'000')--查不到結(jié)果給個(gè)默認(rèn)值
declare @a varchar(100)
declare @num varchar(10)
declare @ordernum varchar(20)
set @a=Convert(varchar,right(@max,len(@max)-10))--截取數(shù)字部分
if(LEFT(@a,1)=0)--以0開頭
begin
if(SUBSTRING(@a,2,1)=0)--有兩個(gè)0
begin
set @num=Convert(varchar,SUBSTRING(@a,3,LEN(@a-2))+1)
end
else if(SUBSTRING(@a,3,1)=0 and SUBSTRING(@a,2,1)=0)--有三個(gè)0
begin
set @num=1
end
else begin --只有一個(gè)0的情況
set @num=Convert(int,SUBSTRING(@a,2,LEN(@a))+1)
end
end
else begin --數(shù)字大于100的情況
set @num=Convert(varchar,@a+1)
end
if(LEN(@num)=1)--截取后不滿三位的補(bǔ)0
begin set @num='00'+@num end
if(LEN(@num)=2)
begin set @num='0'+@num end
set @ordernum=@flag+@dt+@num
return @ordernum
END
調(diào)用:在事務(wù)中先鎖定要操作的表
復(fù)制代碼 代碼如下:
SELECT * FROM tb_EbayOrder WITH (TABLOCKX)
SELECT * FROM tb_EbayOrderList WITH (TABLOCKX)
SELECT * FROM tb_EbayOrderUserInfo WITH (TABLOCKX)
調(diào)用:select dbo.GetOrderNum(@ebaystockflag)
相關(guān)文章
使用 TOP 子句限制UPDATE 語(yǔ)句更新的數(shù)據(jù)
這篇文章主要介紹了使用 TOP 子句限制UPDATE 語(yǔ)句更新的數(shù)據(jù),需要的朋友可以參考下2014-08-08
Spark SQL 中對(duì) Map 類型的操作函數(shù)示例詳解
這篇文章主要介紹了SparkSQL中對(duì)Map類型的操作函數(shù),包括創(chuàng)建、訪問、修改、合并、鍵值操作等功能,通過這些函數(shù),可以方便地進(jìn)行復(fù)雜鍵值對(duì)數(shù)據(jù)的處理,感興趣的朋友跟隨小編一起看看吧2025-01-01
SQL?Server時(shí)間轉(zhuǎn)換3種方法總結(jié)
SQL?Server中處理日期和時(shí)間的常用方法有三種:FORMAT、CONVERT和DATEADD,這篇文章主要介紹了SQL?Server時(shí)間轉(zhuǎn)換的3種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09
淺談tempdb在SqlServer系統(tǒng)中的重要作用
tempdb是SQLServer的系統(tǒng)數(shù)據(jù)庫(kù)一直都是SQLServer的重要組成部分,用來(lái)存儲(chǔ)臨時(shí)對(duì)象。tempdb中的任何數(shù)據(jù)在系統(tǒng)重新啟動(dòng)之后都不會(huì)持久存在。因?yàn)閷?shí)際上每次SQLServer啟動(dòng)的時(shí)候都會(huì)重新創(chuàng)建tempdb。這個(gè)特性就說(shuō)明tempdb不需要恢復(fù)。2014-08-08
SQL Server中使用sp_password重置SA密碼實(shí)例
這篇文章主要介紹了SQL Server中使用sp_password重置SA密碼實(shí)例,一般在忘記SA密碼時(shí)的恢復(fù)手段,需要的朋友可以參考下2014-08-08
Select count(*)、Count(1)和Count(列)的區(qū)別及執(zhí)行方式
這篇文章主要介紹了Select count(*)、Count(1)和Count(列)的區(qū)別及執(zhí)行方式,很多人其實(shí)對(duì)這三者之間是區(qū)分不清的,本文會(huì)闡述這三者的作用、關(guān)系以及背后的原理,需要的朋友可以參考下2015-02-02
遠(yuǎn)程連接SQLSERVER 2000服務(wù)器方法
需求如下:需要遠(yuǎn)程連接外地的SQL Server 2000服務(wù)器。2009-07-07
將MS SQL SERVER數(shù)據(jù)庫(kù)運(yùn)行在普通用戶(獨(dú)立用戶)狀態(tài)下的設(shè)置方法終結(jié)篇
最近接手了一臺(tái)服務(wù)器,里面安裝了sqlserver,為了安全考慮,我們將sqlserver在普通權(quán)限下運(yùn)行,這樣就不會(huì)因?yàn)閟qlserver的自身安全問題,導(dǎo)致服務(wù)器成為肉雞的危險(xiǎn)。2010-05-05

