SQL有段代码看不懂~!

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:51:02
麻烦高手解释下,麻烦详细了,谢谢了~!
DECLARE @MB001 CHAR(30)
DECLARE @I INT
SET @I=0
DECLARE CUR CURSOR
FOR SELECT MB001 FROM INVMB WHERE MB017='1010' ORDER BY MB001

OPEN CUR FETCH NEXT FROM CUR INTO @MB001
WHILE @@FETCH_STATUS =0
BEGIN
SET @I=@I+1
IF @I=1 UPDATE INVMB SET MB021='A1W3' WHERE MB001=@MB001
IF @I=2 UPDATE INVMB SET MB021='A1W4' WHERE MB001=@MB001
IF @I=3 UPDATE INVMB SET MB021='A1W5' WHERE MB001=@MB001
IF @I=4 UPDATE INVMB SET MB021='A2W1' WHERE MB001=@MB001
IF @I=5 UPDATE INVMB SET MB021='A2W2' WHERE MB001=@MB001
IF @I=6 UPDATE INVMB SET MB021='A2W3' WHERE MB001=@MB001
IF @I=7 UPDATE INVMB SET MB021='A2W4' WHERE MB001=@MB001
IF @I=8 UPDATE INVMB SET MB021='A2W5' WHERE MB001=@MB001

IF @I=8 SET @I=0
FETCH NEXT FROM CUR INTO @MB001
END
CLOSE CUR
DEALLOCATE CUR

DECLARE @MB001 CHAR(30)
DECLARE @I INT
SET @I=0
DECLARE CUR CURSOR
FOR SELECT MB001 FROM INVMB WHERE MB017='1010' ORDER BY MB001
--为所获得的数据集指定游标

OPEN CUR FETCH NEXT FROM CUR INTO @MB001
--打开游标开始抓第一条数据
WHILE @@FETCH_STATUS =0
--如果数据集里一直有数据
BEGIN
SET @I=@I+1
IF @I=1 UPDATE INVMB SET MB021='A1W3' WHERE MB001=@MB001
--如果是数据集里第N*8+1条数据 则执行本条语句(n=0,1,2....)
IF @I=2 UPDATE INVMB SET MB021='A1W4' WHERE MB001=@MB001
--如果是数据集里第N*8+2条数据 则执行本条语句(n=0,1,2....) 以下以此类推
IF @I=3 UPDATE INVMB SET MB021='A1W5' WHERE MB001=@MB001
IF @I=4 UPDATE INVMB SET MB021='A2W1' WHERE MB001=@MB001
IF @I=5 UPDATE INVMB SET MB021='A2W2' WHERE MB001=@MB001
IF @I=6 UPDATE INVMB SET MB021='A2W3' WHERE MB001=@MB001
IF @I=7 UPDATE INVMB SET MB021='A2W4' WHERE MB001=@MB001
IF @I=8 UPDATE INVMB SET MB021='A2W5&