SQL存储过程中怎样给变量赋值?

create proc fuction_View
@count int
as
declare @strsql nvarchar(1000)
declare @s_id int
@strsql ='select top 1 s_id from (select top ' + @count + ' s_id from PageIndex order by s_id ) aa order by s_id desc'
exec(@strsql)
-----这里我想把exec(@strsql)得出来的值赋值给变量@s_id,应该怎么写呢?谢谢!
go
因为我听说游标会影响执行效率,所认没用,如果用游标能说具体点吗?我对这个用的少,大家多一些人想想解决方案啊,在这里形成一个总结,我想这个问题是很容易遇到的常见问题吧?我刚才不用游标已经做出来了,我的方法将会告诉给最佳答案者!

呵呵,set @id=exec(@strsql)是会报语法错误的,至于回答3楼说的:exec 和 exec()是有区别的,exec加上括号,括号里面写变量名,变量名可以写SQL语句,exec(赋于了SQL语句的变量) 就是执行这句SQL了。

第1个回答  推荐于2018-05-09
create proc fuction_View
@count int
as
declare @strsql nvarchar(1000)
declare @s_id int
@strsql ='select top 1 @id=s_id from (select top ' + @count + ' s_id from PageIndex order by s_id ) aa order by s_id desc'
execute sp_executesql @strsql,N'@id int out',@id=@s_id out
go本回答被提问者采纳
第2个回答  2010-12-18
用游标吧,cursor,先declare,然后循环的fetch into 到s_id本回答被网友采纳
第3个回答  2010-12-19
exec 是执行存储过程的命令,不能作为存储过程名
而且你这个似乎是希望用变量转换成SQL命令,不是这样用法的
第4个回答  2010-12-19
不是直接set @id=exec(@strsql)么
相似回答