2017-06-06 2 views
0

ich den Fehler bekommenVergleichen Sie zwei Variablen in einer SQL-While-Schleife

Msg 102, Ebene 15, Status 1, Zeile 16
falsche Syntax nahe '@PacketCode'.

wenn ich versuche, auszuführen. Etwas stimmt nicht mit meiner WHILE-Schleife, aber ich kann nicht sehen, was. Irgendwelche Vorschläge?

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

Ist es Mysql oder SQL-Server? Bitte markieren Sie es entsprechend –

+0

Es ist SQL Server – PC2014

+0

Was hast du probiert? Haben Sie die Dokumentation überprüft? Zeilen kommentiert, bis der Fehler verschwindet und Sie wissen, was das Problem ist? – sirdank

Antwort

1

Versuchen Sie, eine SET vor dem @PacketCode in der BEGIN hinzuzufügen:

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

In TSQL Sie Variablenwerte mit dem SET-Befehl zuweisen.

Anstatt also diese:

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

Sie müssen dies tun:

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

Lustig, dass Sie diese richtig in den Code überall sonst tat.

+0

Ja das hat es behoben! Ich kann nicht glauben, dass ich es verpasst habe. – PC2014