必须声明标量变量“@numCount”

Must declare the scalar variable "@numCount"

当我在循环外进行侧投工作时出现此错误。

Msg 137, Level 15, State 2, Line 2
Must declare the scalar variable "@numCount"

你能告诉我我做错了什么吗??

谢谢

create table #myTemp 
(
     rowid int identity (1,1), 
     Name varchar(200),
     email varchar(200),
     flag bit
)

select * from #myTemp

declare @name varchar(200), @email varchar(200)
declare @numCount int = 20

WHILE (1 <= @numCount)
BEGIN 
    SET @name = 'My Name '+ CAST(@numCount AS VARCHAR)
    SET @email = 'Email'+ CAST(@numCount AS VARCHAR)

    INSERT INTO #myTemp(Name, Email, flag)
    VALUES (@name, @email, 1)

    SET @numCount = @numCount - 1
END
GO

PRINT 'My String' + CAST(@numCount AS VARCHAR) + '***'

您不能像这样同时声明和初始化一个变量:

declare @numCount int = 20

改为执行以下操作:

declare @numCount int;
SET @numCount = 20;

它必须让您的变量只能在您的批处理中访问。去掉 "GO"。它应该有效。

create table #myTemp (rowid int identity (1,1), Name varchar(200),email varchar(200),flag bit)

select * from #myTemp

declare @name varchar(200),@email varchar(200)
declare @numCount int = 20
while  (1 <= @numCount)
begin 

SET @name =  'My Name '+ CAST(@numCount AS VARCHAR)
SET @email =  'Email'+ CAST(@numCount AS VARCHAR)

INSERT INTO #myTemp
(Name,Email,flag)
values
(@name,@email,1)

SET @numCount = @numCount - 1

END

PRINT 'My String' + CAST(@numCount AS VARCHAR) + '***'

在同一语句中声明和设置在 SQL Server 2008 R2 中完全有效。问题是你的 GO

GO -- < -- starts a new batch and thus the declaration on @NumCount is totally unrealted to this Print.

PRINT 'My String' + CAST(@numCount AS VARCHAR) + '***'