如何使用EXEC或sp_executesql设置SQL变量
我正在尝试动态构建一个查询,该查询将设置一个变量。我该怎么做 这是我到目前为止所拥有的如何使用EXEC或sp_executesql设置SQL变量,sql,sql-server,tsql,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, @Parm
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,16级,状态1,第1行
参数化查询“@maxRowCount intset@maxRowCount=select count*from docto”需要未提供的参数“@maxRowCount”
我试图将@maxRowCount设置为测试表的总行数如果这样做,您需要参数定义中的“输出”以及结果所在的位置
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)
您真的需要在这里使用动态sql吗?或者这只是一个简化的示例?这是一个非常简化的示例。