存储过程中遇到表名、字段为变量的时候不可避免的会使用
exec sp_executesql @sql
当插入一条记录的时候,我们习惯用 SCOPE_IDENTITY() 来获取最后一条的ID号,
然而用在 sp_executesql 之后时,获取的值为NULL,无法正常得到ID,原因是当 exec sp_executesql 执行结束,这个所谓的“范围”也就结束了。要想得到ID,必须让 SCOPE_IDENTITY 在这个范围内,所以需要将 SCOPE_IDENTITY 放入@sql中
参考:
评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1212
exec sp_executesql @sql
当插入一条记录的时候,我们习惯用 SCOPE_IDENTITY() 来获取最后一条的ID号,
然而用在 sp_executesql 之后时,获取的值为NULL,无法正常得到ID,原因是当 exec sp_executesql 执行结束,这个所谓的“范围”也就结束了。要想得到ID,必须让 SCOPE_IDENTITY 在这个范围内,所以需要将 SCOPE_IDENTITY 放入@sql中
参考:
select @Sql = N' insert into tao123 ; select @varNewId= SCOPE_IDENTITY() ; '
execute sp_executesql @Sql ,N'@varNewId int OUTPUT',@varNewId=@newId output
execute sp_executesql @Sql ,N'@varNewId int OUTPUT',@varNewId=@newId output
[最后修改由 admin, 于 2009-03-04 15:31:07]

这篇日志没有评论。
此日志不可发表评论。