--概要:SqlService常用语句[游标]
--设计者:DuanXuWen
--版本:0.1
--修改者:
--修改时间:
CREATE TABLE #table1
(
Id INT IDENTITY(1,1), --主键自增
Name VARCHAR(20),--名字
Age INT --年龄
)
INSERT INTO #table1 VALUES('哈哈',16)
INSERT INTO #table1 VALUES('嘻嘻',17)
INSERT INTO #table1 VALUES('呵呵',18)
INSERT INTO #table1 VALUES('嘿嘿',19)
SELECT * FROM #table1
CREATE TABLE #table2
(
Id INT IDENTITY(1,1), --主键自增
Name VARCHAR(20),--名字
Age INT --年龄
)
SELECT * FROM #table2
--①游标----------------------------------------------------------------------
--循环判断#table1中数据Name,#table2中没有则添加,有则修改数据Age为6
--游标更新顶级菜单排序
DECLARE @this_Name VARCHAR(50)
DECLARE EditTable2 CURSOR FOR (SELECT Name FROM #table1)--创建游标
OPEN EditTable2 --开始游标
FETCH NEXT FROM EditTable2 --指针下移
INTO @this_Name --获取当前指针指向的菜单ID
WHILE @@FETCH_STATUS=0 --0代表未执行结束
BEGIN
--判断是否已存在记录,如不存在则添加一条记录
IF NOT EXISTS (SELECT * FROM #table2 WHERE Name = @this_Name)
BEGIN
INSERT INTO #table2 (Name,Age)
SELECT Name,Age FROM #table1 WHERE Name = @this_Name
END
ELSE
BEGIN
--如存在则修改
UPDATE #table2 SET Age = 6 WHERE Name = @this_Name
END
FETCH NEXT FROM EditTable2 ----指针下移
INTO @this_Name --获取当前指针指向的菜单ID
END
CLOSE EditTable2--关闭游标
DEALLOCATE EditTable2--释放游标
--②循环----------------------------------------------------------------------
--将#table1中的数据Age循环修改为从30自增
DECLARE @i INT,@count INT
SET @i = 0
SELECT @count = COUNT(ID) FROM #table1
WHILE @i< @count
BEGIN
SET @i=@i + 1
UPDATE #table1 SET Age = @i+29 WHERE ID=@i
END