Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用EXEC或sp_executesql设置SQL变量_Sql_Sql Server_Tsql - Fatal编程技术网

如何使用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吗?或者这只是一个简化的示例?这是一个非常简化的示例。