SQL里要做循环比较麻烦,有时候需要用游标(CURSOR)。我是SQL大菜鸟,昨天刚开荒成功了一个游标。发出来备用。
基本语法形式是这样的:
DECLARE @临时变量 UNIQUEIDENTIFIER DECLARE 游标名称 CURSOR FOR -- SELECT的结果 OPEN 游标名称 FETCH NEXT FROM 游标名称 INTO @临时变量 WHILE @@FETCH_STATUS = 0 BEGIN -- 对每一条记录的操作 FETCH NEXT FROM 游标名称 INTO @临时变量 END CLOSE 游标名称 DEALLOCATE 游标名称
举个例子,遍历我博客的分类表,输出每一项的Route名称:
DECLARE @tempId UNIQUEIDENTIFIER DECLARE @tempName NVARCHAR(150) DECLARE @tempDisplayName NVARCHAR(250) DECLARE C1 CURSOR FOR SELECT c.Id, c.Name, c.DisplayName FROM Category c OPEN C1 FETCH NEXT FROM C1 INTO @tempId, @tempName, @tempDisplayName WHILE @@FETCH_STATUS = 0 BEGIN SELECT @tempName FETCH NEXT FROM C1 INTO @tempId, @tempName, @tempDisplayName END CLOSE C1 DEALLOCATE C1