存储过程,取出最大ID值

TSY20121101 2013-04-17 09:44:06
应该很简单的吧?
没写过,谁给个能跑的代码

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

谁写一下?
...全文
323 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
TSY20121101 2013-04-17
  • 打赏
  • 举报
回复
用了上面那个存储过程,一直返回 1 直接用sql语句 select max(id) from ..... 检索 能得出最大值 请问啥原因啊
TSY20121101 2013-04-17
  • 打赏
  • 举报
回复
另外,定义@s没用吧? 直接不能输出@i + 1 ?
TSY20121101 2013-04-17
  • 打赏
  • 举报
回复
楼上的 print ‘1’ 在程序里接收不到啊
Mr_Nice 2013-04-17
  • 打赏
  • 举报
回复

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
haitao 2013-04-17
  • 打赏
  • 举报
回复
如果改用一个专门的id生成表: update tbid set fmax=fmax+1 output fmax where fa=@a and fb=@b
连星入剑端 2013-04-17
  • 打赏
  • 举报
回复
你应该是想生成一个自定义的编号吧? 如果是那样,用个辅助表记录下当前值效率会高点,而且也会更灵活(比如每天重新开始编号之类的)。 再者,听说sql 2012已经有类似于oracle的sequence的东西,不过我也没用过。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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