1、建立test数据库;
2、创建test1数据表;
test1表属性如下:
其中,ID字段设置为标识增量,增量种子为1;
这个实例是实现从第一行数据开始,将每一行最后一个字段值加下一行第二个字段值再减去第三个字段值,并用获得的新值更新当前行最后一个字段值,循环执行,直到所有记录均完成更新为止。(这段代码是我在MSDN上得到的启发,感谢MSDN上帮助过我的人,你们的帮助使我进步很多)
脚本代码如下:
USE[TEST]
GO
--定义所有需要的变量
[email protected] 存放当前ID号
[email protected]
存放最后一个ID号
[email protected] 存放ID标识(存在为1,不存在为0)
[email protected] 存放计算后的库存数
DECLARE @i INT,@Count INT,@TempID INT,@Cuna INT
--实现获得最后一个ID号
SELECT @Count=ID FROM TEST1
--读取第一条记录的ID号保存到@i中
SELECT TOP 1
@i=ID FROM test1
--更新第一条记录中的CUN字段值
UPDATE TEST1 SET CUN=JIN-CHU
WHERE [email protected]
--读取更新后的CUN字段值赋值给临时变量@Cuna
SELECT @Cuna=CUN FROM TEST1
WHERE [email protected]
[email protected]自增1
SET @[email protected]+1
--循环判断是否到达最后一条记录
WHILE(@i<[email protected])
BEGIN
--查找与ID与@i相等的记录
SELECT @TempID=COUNT(1) FROM TEST1 WHERE [email protected]
BEGIN
--记录不存在@i自增1
IF(@TempID=0)
SET @[email protected]+1
ELSE
--记录存在更新记录
UPDATE TEST1 SET
[email protected]+JIN-CHU WHERE [email protected]
--读取更新后的CUN字段值
SELECT @Cuna=CUN FROM TEST1 WHERE
[email protected]
END
BEGIN
--判断是否到达最后一条记录
IF(@i>@Count)
--到达最后一条记录时执行退出
BREAK
ELSE
--为到达最后一条记录时@i自增1
SET @[email protected]+1
--继续返回WHILE处执行WHILE循环体语句
CONTINUE
END
END