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

createprocfuction_View@countintasdeclare@strsqlnvarchar(1000)declare@s_idint@strsql='... 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了。
展开
 我来答
jyl_19
推荐于2018-05-09 · TA获得超过1002个赞
知道小有建树答主
回答量:708
采纳率:0%
帮助的人:1045万
展开全部
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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
apple19850507
2010-12-18 · 超过33用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:0
展开全部
用游标吧,cursor,先declare,然后循环的fetch into 到s_id
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-12-19
展开全部
exec 是执行存储过程的命令,不能作为存储过程名
而且你这个似乎是希望用变量转换成SQL命令,不是这样用法的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jl3768038
2010-12-19
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
不是直接set @id=exec(@strsql)么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式