日期:2014-05-17  浏览次数:20457 次

存储过程,取出最大ID值
应该很简单的吧?
没写过,谁给个能跑的代码

表名:Atable
检索条件(要从外面传入的) @age, @sex
取得最大ID值, 并返回 max(id)+ 1
当检索不到数据时(表明表内无记录,则max(id)+1 为 1)

谁写一下?

------解决方案--------------------

DECLARE @i INT 
DECLARE @s VARCHAR(100)
SELECT @i = MAX(id) FROM atable WHERE age = @age AND sex = @sex;  --小提醒一下,性别字段的正确英文名称是gender

IF @i IS NULL
PRINT '1'
ELSE
SELECT @s = CONVERT(VARCHAR,@i+1)
PRINT @s

------解决方案--------------------
你应该是想生成一个自定义的编号吧?
如果是那样,用个辅助表记录下当前值效率会高点,而且也会更灵活(比如每天重新开始编号之类的)。
再者,听说sql 2012已经有类似于oracle的sequence的东西,不过我也没用过。
------解决方案--------------------
如果改用一个专门的id生成表:

update tbid
set fmax=fmax+1
output fmax
where fa=@a and fb=@b