再升星送产生自增长ID的存储过程 + 提前庆祝五一黄金周

stoway 2004-04-19 06:46:18
以下为sql server的存储过程:
create procedure Pro_GenerateID
(
@tableName varchar(50), --要产生递增号的表名
@columnName varchar(50), --要产生递增号的列名
@signID varchar(20) --标记符,如是以G-1,G-2,G-3...形式递增,如果给@signID传递'G-'则返回G-4

)
as
declare @signLength int, --@signID的长度
@strScript varchar(800), --产生递增id的sql字符串
@strIntScript varchar(200) --当前表最大ID号的sql字符串

set @signLength = len(@signID)

select @strIntScript='cast(substring(' + @columnName +
',' + cast((@signLength + 1) as varchar(20)) + ',(select max(len(' + @columnName + ')) from ' + @tableName +')-' +cast(@signLength as varchar(20)) + ') as int)'

select @strScript='select top 1 (''' + @signID + ''' + cast((' + @strIntScript + '+1) as varchar(20))) as id from ' + @tableName + ' where left(' + @columnName + ',' + cast(@signLength as varchar(20)) + ')=''' + @signID + ''' order by ' + @strIntScript + ' desc'
select @strScript='if(exists(select * from ' + @tableName + ' where ' + @columnName + ' like ''' + @signID + '%''))
' + @strScript +'
else
select ''' + (@signID +'1') + ''' as id'

print @strScript
exec(@strScript)
如果在ccc表中没有数据
执行此存储过程:exec Pro_GenerateID 'ccc','c1','G-'
显示结果为:
id
------
G-1
(返回 1 行)
...全文
156 147 打赏 收藏 转发到动态 举报
写回复
用AI写文章
147 条回复
切换为时间正序
请发表友善的回复…
发表回复
caomj 2004-04-30
  • 打赏
  • 举报
回复
顶,楼主牛人+好人,祝所有兄弟姐妹节日快乐
smx717616 2004-04-30
  • 打赏
  • 举报
回复
呵呵,顶
ghost225 2004-04-30
  • 打赏
  • 举报
回复
up
Fluxray 2004-04-30
  • 打赏
  • 举报
回复
顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!顶!
nnh 2004-04-30
  • 打赏
  • 举报
回复
收分.
阿飞666888 2004-04-30
  • 打赏
  • 举报
回复
快乐。
但这个我看不懂。
matinpetrov 2004-04-30
  • 打赏
  • 举报
回复
ding a ding pf a pf
ILoveProgramer 2004-04-30
  • 打赏
  • 举报
回复
恭喜,不过存储过程太难看懂了:(
win_feng 2004-04-30
  • 打赏
  • 举报
回复
好!!
win_feng 2004-04-30
  • 打赏
  • 举报
回复
hao!!!
32848640 2004-04-30
  • 打赏
  • 举报
回复
up
shoutor 2004-04-30
  • 打赏
  • 举报
回复
好东西,收藏
1979xt 2004-04-30
  • 打赏
  • 举报
回复
up
zhaozhongju 2004-04-30
  • 打赏
  • 举报
回复
支持,学习
jjfeng 2004-04-30
  • 打赏
  • 举报
回复
很好的东西,多谢。
srz007 2004-04-30
  • 打赏
  • 举报
回复
不错
bennetchen 2004-04-30
  • 打赏
  • 举报
回复
我頂啊
scong 2004-04-30
  • 打赏
  • 举报
回复
接分是快乐的:)
wahahasnail 2004-04-30
  • 打赏
  • 举报
回复
up!
cg1120II 2004-04-26
  • 打赏
  • 举报
回复
:)
加载更多回复(127)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧