日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

樹(shù)形數(shù)據(jù)編號(hào)重排的通用存儲(chǔ)過(guò)程

系統(tǒng) 2008 0

--重排編碼的存儲(chǔ)過(guò)程
CREATE PROC p_RTaxisCode
@TableName sysname,??? --重排編碼的表名
@FieldName sysname,??? --編碼字段名
@CodeRule varchar(100)? --以逗號(hào)分隔的編碼規(guī)則,每層編碼的長(zhǎng)度,比如1,2,3,表示有三層編碼,第一層長(zhǎng)度為1,第二層長(zhǎng)度為2,第三層長(zhǎng)度為3
AS
--參數(shù)檢查
IF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),N'IsUserTable'),0)=0
BEGIN
?RAISERROR(N'"%s"不存在,或者不是用戶(hù)表',1,16,@TableName)
?RETURN
END
IF NOT EXISTS(SELECT * FROM SYSCOLUMNS WHERE ID=OBJECT_ID(@TableName) AND name=@FieldName )
BEGIN
?RAISERROR(N'列名"%s"在用戶(hù)表"%s"中無(wú)效',1,16,@FieldName,@TableName)
?RETURN?
END
IF ISNULL(@CodeRule,'')=''
BEGIN
?RAISERROR(N'必須編碼規(guī)則字符串',1,16)
?RETURN?
END
IF PATINDEX(N'%[^0-9^,]%',@CodeRule)>0
BEGIN
?RAISERROR(N'編碼規(guī)則字符串"%s"中只能包含數(shù)字和逗號(hào)(,)',1,16,@CodeRule)
?RETURN?
END

--生成編碼重排處理語(yǔ)句
DECLARE @s nvarchar(4000),@len int,@lens int
SELECT
?@TableName=QUOTENAME(@TableName),
?@FieldName=QUOTENAME(@FieldName),
?@len=LEFT(@CodeRule,CHARINDEX(N',',@CodeRule+N',')-1),
?@lens=@len,
?@CodeRule=STUFF(@CodeRule,1,CHARINDEX(N',',@CodeRule+N','),N'')+N',',
?@s=N'RIGHT('+CAST(POWER(10,@len) as varchar)
??+N'+(SELECT COUNT(DISTINCT '+@FieldName
??+N') FROM '+@TableName
??+N' WHERE '+@FieldName+N'<=a.'+@FieldName
??+N' AND LEN( '+@FieldName+N')='+CAST(@len as varchar)
??+N'),'+CAST(@len as varchar)+N')'

WHILE LEN(@CodeRule)>1
BEGIN
?SELECT
??@len=LEFT(@CodeRule,CHARINDEX(N',',@CodeRule)-1),
??@s=@s
???+N'+CASE WHEN LEN( '+@FieldName
???+N')>'+CAST(@lens as varchar)
???+N' THEN RIGHT('+CAST(POWER(10,@len) as varchar)
???+N'+(SELECT COUNT(DISTINCT '+@FieldName
???+N') FROM '+@TableName
???+N' WHERE '+@FieldName+N'<=a.'+@FieldName
???+N' AND '+@FieldName+N' LIKE LEFT( a.'+@FieldName
???+N','+CAST(@lens as varchar)
???+N')+'''+REPLICATE(N'_',@len)
???+N'''),'+CAST(@len as varchar)
???+N') ELSE '''' END',
??@lens=@lens+@len,
??@CodeRule=STUFF(@CodeRule,1,CHARINDEX(N',',@CodeRule),N'')
END
EXEC(N'UPDATE a SET '+@FieldName+N'='+@s+N' FROM '+@TableName+N' a')

樹(shù)形數(shù)據(jù)編號(hào)重排的通用存儲(chǔ)過(guò)程


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 马龙县| 绥宁县| 正宁县| 井研县| 信阳市| 怀柔区| 离岛区| 海兴县| 青铜峡市| 清原| 南漳县| 襄垣县| 安塞县| 会同县| 从化市| 朝阳区| 申扎县| 建平县| 临沧市| 青岛市| 洛宁县| 城步| 喀什市| 寿光市| 饶平县| 北流市| 中江县| 乌兰县| 花莲县| 容城县| 井陉县| 兴安盟| 兰溪市| 勃利县| 新余市| 喀喇沁旗| 剑川县| 栾川县| 兰坪| 鹰潭市| 黔西县|