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