我有一个 TSQL 存储过程,它构建一个查询并按如下方式执行它:
EXEC (@sqlTop + @sqlBody + @sqlBottom)
@sqlTop 包含类似 SELECT TOP(x) col1, col2, col3...
TOP(x) 将限制返回的行数,因此稍后我想知道表中与查询匹配的实际行数是多少。
然后我将 @sqlTop 替换为以下内容:
EXEC ('SELECT @ActualNumberOfResults = COUNT(*) ' + @sqlBody)
我可以明白为什么这不起作用,以及为什么会发生未声明值的错误,但我认为它充分描述了我想要完成的任务。
有任何想法吗?
use sp_executesql
and an output parameter
example
DECLARE @sqlBody VARCHAR(500),@TableCount INT, @SQL NVARCHAR(1000)
SELECT @sqlBody = 'from sysobjects'
SELECT @SQL = N'SELECT @TableCount = COUNT(*) ' + @sqlBody
EXEC sp_executesql @SQL, N'@TableCount INT OUTPUT', @TableCount OUTPUT
SELECT @TableCount
GO
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)