2017-06-06 66 views
0

我收到错误在SQL比较两个变量WHILE循环

消息102,级别15,状态1,行16
附近有语法错误@PacketCode“。

当我尝试执行。我的WHILE循环有些问题,但我看不到。有什么建议么?

DECLARE @PacketCode as varchar(255) 
SET @PacketCode = 'ZZZ_Archive_TEST' 

DECLARE @Value as varchar(255) 
SET @Value = '' 

DECLARE @i int 
SET @i = 1 

SELECT 
    @Value = (SELECT packetcode 
       FROM tblScriptReports 
       WHERE packetcode = @PacketCode) 

WHILE (@PacketCode = @Value) 
BEGIN 
    @PacketCode = @PacketCode + ' (' + @i + ')' 

    SELECT @Value = (SELECT packetcode 
        FROM tblScriptReports 
        WHERE packetcode = @PacketCode) 

    SET @i = @i + 1     
END 

SELECT @PacketCode 
+1

它是Mysql还是SQL-Server?请相应标记 –

+0

这是SQL Server – PC2014

+0

你有什么尝试?你检查过文件吗?注释掉直到错误消失,你知道问题是什么? – sirdank

回答

1

尝试添加一个设置在@PacketCode前在BEGIN:

DECLARE @PacketCode as varchar(255) 
set @PacketCode = 'ZZZ_Archive_TEST' 

DECLARE @Value as varchar(255) 
set @Value = '' 

DECLARE @i int 
set @i = 1 

SELECT @Value = (SELECT packetcode 
      FROM tblScriptReports 
      WHERE packetcode = @PacketCode) 

WHILE (@PacketCode = @Value) 

BEGIN 

SET @PacketCode = @PacketCode + ' (' + @i + ')' 

    SELECT @Value = (SELECT packetcode 
        FROM tblScriptReports 
        WHERE packetcode = @PacketCode) 

    set @i = @i + 1     
END 

select @PacketCode 
3

在TSQL分配变量值与SET命令。

因此,不是这样的:

@PacketCode = @PacketCode + ' (' + @i + ')' 

必须这样做:

SET @PacketCode = @PacketCode + ' (' + @i + ')' 

搞笑的是你的代码这样做正确的其他地方。

+0

是的这个固定它!不能相信我错过了它。 – PC2014