--1种
--省略
@total int output,
--省略
declare @sql nvarchar(1000)
set @sql = 'select @total =count(1)
from ImgStore
where iss_id = '+@iss_id+''
exec sp_executesql @sql,N'@total int output',@total output
--2种
declare @sql nvarchar(1000)
set @sql = 'select count(1) as num
from ImgStore
where iss_id = '+@iss_id+''
declare @sqlexe
set @sqlexe = 'with tmp as ('+ @sql +')
select @total = num from tmp '
exec sp_executesql @sqlexe,N'@total int output',@total output第一种就不能运行,而第二种就可以正常运行,这是为什么?
select @iss_id=4
--省略
DECLARE @total int
--省略
declare @sql nvarchar(1000)
set @sql = 'select @total =count(1)
from sys.sysobjects
where id = '+rtrim(@iss_id)+''
exec sp_executesql @sql,N'@total int output',@total output
select @total
经验证是可以的。
@iss_id 是整型嘛,转换下
不用加output吧