SQLSERVER2008在存储过程中执行动态SQL语句的问题
我想要达到的效果就是:在根据条件返回记录数后,能够根据返回的记录数去继续执行下面的SQL语句,进而返回结果,同时在页面上显示的结果为10: CREATE proc select_areasAssociation_sort @condition varchar(100) as declare @regularSortCount int,@sortCount int,@sql varchar(500) --返回固态排名的记录数 set @sql='select '+@regularSortCount+'=COUNT(1) from AreasAssociation where RegularSort is not null and RegularSort>0 and '+@condition exec @sql --返回动态排名的记录数 set @sql='select '+@sortCount+'=COUNT(1) from AreasAssociation where Sort is not null and Sort>0 and '+@condition exec @sql --当动态排名和固定排名都不存在时 if(@regularSortCount=0 and @sortCount=0) begin --select top 10 * from AreasAssociation where PositionID=2 --and CrabType=1 ORDER BY newID() return end --当固定排名存在而动态排名不存在时 else if(@regularSortCount>0 and @sortCount=0) begin 。。。。。。。 但是执行到”--返回固态排名的记录数”的时候就报错了,各位大侠给点建议吧
一个是@regularSortCount变量是int型,需要转换成字符型才能与字符拼接 另一个是要想用动态sql输出@regularSortCount变量需要用sp_executesql来执行
SQL code?declare @sql nvarchar(max),@count intset @sql='select @c=count(1) from test 'exec sp_executesql @sql,N'@c int output',@count outputselect @count
这个要用括号括起来,不然会认为是存储过程,exec(@sql)
|