如何使用EXEC或sp_executesql

时间:2015-06-24 15:12:25

标签: sql sql-server tsql

我正在尝试构建一个将设置变量的查询。我该怎么做?

这是我到目前为止所拥有的

DECLARE @SQL as NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

set @SQL = 'set @maxRowCount = (select count(*) from Test)'
SET @ParmDefinition = N'@maxRowCount int';

EXECUTE sp_executesql @SQL, @ParmDefinition

当我运行时,我收到以下错误

  

Msg 8178,Level 16,State 1,Line 1
  参数化查询'(@ maxRowCount int)设置@maxRowCount =(从docto中选择count(*)'需要参数' @ maxRowCount',这是未提供的。

我想将@maxRowCount设置为Test表的总行数

1 个答案:

答案 0 :(得分:2)

这很有效,你需要输出' OUTPUT'在参数定义中以及结果所在的位置

DECLARE @SQL as NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @iRowCount INT
SET @SQL = 'set @maxRowCount = (select count(*) from Test)'
SET @ParmDefinition = N'@maxRowCount INT OUTPUT';

EXECUTE sp_executesql @SQL, @ParmDefinition, @maxRowCount = @iRowCount  OUTPUT

PRINT 'rowcount is:' + CONVERT(VARCHAR,@iRowCount)