存储过程,取出最大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