Sql server 2005 构建SQL字符串的问题

Sql server 2005 构建SQL字符串的问题,sql-server-2005,tsql,Sql Server 2005,Tsql,为什么这段代码对我不起作用?它给出了必须声明标量变量@y的错误 exec函数创建一个新的执行范围。您的@y变量在那里不存在 改用。请注意,您仍然需要做一些额外的工作才能将变量传递到函数边界 DECLARE @IntVariable int; DECLARE @SQLString nvarchar(500); DECLARE @ParmDefinition nvarchar(500); DECLARE @max_title varchar(30); SET @IntVariable = 197;

为什么这段代码对我不起作用?它给出了必须声明标量变量@y的错误

exec函数创建一个新的执行范围。您的@y变量在那里不存在

改用。请注意,您仍然需要做一些额外的工作才能将变量传递到函数边界

DECLARE @IntVariable int;
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @max_title varchar(30);

SET @IntVariable = 197;
SET @SQLString = N'SELECT @max_titleOUT = max(Title) 
   FROM AdventureWorks.HumanResources.Employee
   WHERE ManagerID = @level';
SET @ParmDefinition = N'@level tinyint, @max_titleOUT varchar(30) OUTPUT';

EXECUTE sp_executesql @SQLString, @ParmDefinition, @level = @IntVariable, @max_titleOUT=@max_title OUTPUT;
SELECT @max_title;
exec函数创建一个新的执行范围。您的@y变量在那里不存在

改用。请注意,您仍然需要做一些额外的工作才能将变量传递到函数边界

DECLARE @IntVariable int;
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @max_title varchar(30);

SET @IntVariable = 197;
SET @SQLString = N'SELECT @max_titleOUT = max(Title) 
   FROM AdventureWorks.HumanResources.Employee
   WHERE ManagerID = @level';
SET @ParmDefinition = N'@level tinyint, @max_titleOUT varchar(30) OUTPUT';

EXECUTE sp_executesql @SQLString, @ParmDefinition, @level = @IntVariable, @max_titleOUT=@max_title OUTPUT;
SELECT @max_title;