我收到错误
Msg 102,Level 15,State 1,Line 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
答案 0 :(得分:3)
在TSQL中,您可以使用SET命令分配变量值。
所以不要这样:
@PacketCode = @PacketCode + ' (' + @i + ')'
你必须这样做:
SET @PacketCode = @PacketCode + ' (' + @i + ')'
有趣的是,您在代码中的其他任何位置都正确地执行了此操作。
答案 1 :(得分:1)
尝试在BEGIN中的@PacketCode前面添加一个SET:
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