执行存储过程解决方案

执行存储过程
  create procedure Infor
(
@num int output,
@filter varchar(100)
)

as
declare @sql varchar(100)
set @sql='select @num=count(*) from sales order by'+ @filter+'desc'
exec(@sql)
为什么获取不到@num的值

declare @num int

exec Infor @num ,'title_id'
------解决方案--------------------
exec(@sql)

这个@sql 已经不是在存储过程内部了,是把这句提交给数据库系统。当然看不到你的存储过程内的变量了。
------解决方案--------------------
1、用临时表保存;
2、用打开记录集的方法获得。