2017-06-06 65 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