我在SQL Server存储过程中运行以下SQL select语句时遇到问题:
SELECT @percapCount = count(socSecNo)
FROM @percapHistPrev
似乎并不了解@percapHistPrev
和socsecno
是什么。我已经在存储过程中声明了@percapCount
和@percapHistPrev
。
以下声明就在其上方
SELECT @memberCount = count(socSecNo)
FROM member
我猜测尝试使用表名作为变量是问题所在。那么如何修复声明才能使其正常工作?
答案 0 :(得分:0)
您需要使用输出参数和sp_executeSQL调用。例如
DECLARE @ctr int;
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @tblName varchar(30);
SET @tblName='member'
SET @ctr = 0
SET @SQLString = N'SELECT @ctrOUT = count(SocSecNo) FROM '+@tblName
SET @ParmDefinition = N'@ctrOUT int OUTPUT';
EXECUTE sp_executesql @SQLString, @ParmDefinition, @ctrOUT=@ctr OUTPUT;
SELECT @ctr