求助,存储过程里面,使用了top n的语句,这个n想设置成变量,如何实现?
直接用@n不行,用exec执行字符串但无法得到我需要的返回值
请高手指点一下,谢谢
问题点数:20、回复次数:9Top
1 楼hsj20041004(光芒)回复于 2005-05-24 12:52:26 得分 0
declare @num int
declare @sql
select @num=9
select @sql='select top'+ @num +' * from tablename order by id'
exec(@sql)Top
2 楼slamz(龙魂)回复于 2005-05-24 13:02:58 得分 0
谢谢hsj的回复,这个方法我也知道,问题就在我如何获取这个脚本执行后的结果?例如将结果集赋值给变量?Top
3 楼cegcegceg(CEG)回复于 2005-05-24 13:08:45 得分 0
@num通过参数传进来Top
4 楼slamz(龙魂)回复于 2005-05-24 13:12:36 得分 0
可能我描述不太明白吧.
我的意思是用exec执行了这句sql后,如何获得结果
例如: exec('select max(id) from tablename order by id')
如何获得max(id)这个结果?Top
5 楼hsj20041004(光芒)回复于 2005-05-24 13:19:35 得分 0
执行后的结果是一个记录集!!!
你要把他返回???Top
6 楼slamz(龙魂)回复于 2005-05-24 13:26:35 得分 0
例如前面我说的,我执行了语句后,需要获得max(id)的值,并用于其他方面的运算.
或者说这个记录集生成后我该如何读取这个记录集里面的数据呢?Top
7 楼hsj20041004(光芒)回复于 2005-05-24 13:31:21 得分 20
select @sql= 'select @num=max(id) from tablename order by id'
exec sp_executesql @sql, N'@num Int out',@num output
select @numTop
8 楼hsj20041004(光芒)回复于 2005-05-24 13:32:50 得分 0
这样不就可以了
declare @num int
select @num=max(id) from tablename order by id
select @num
Top
9 楼slamz(龙魂)回复于 2005-05-24 14:32:19 得分 0
hsj兄,用sp_executesql已经成功实现了,实在非常感谢你的帮忙!:)Top




