SQL游标 数据库编程样例
--处理file与folder中的order
-- 声明变量
DECLARE
@fileid AS INT,
@folderid AS INT,
@order AS INT,
@oldFolderId AS INT,
@orderCursor AS INT;
-- 声明游标
DECLARE C_FILE CURSOR FAST_FORWARD FOR
SELECT Id,FolderID,[ORDER]
FROM FILES where [ORDER]=0
ORDER BY FolderId,Name;
OPEN C_FILE;
-- 取第一条记录
FETCH NEXT FROM C_FILE INTO @fileid,@folderid,@order;
set @oldFolderId = @folderid
set @orderCursor = 0
WHILE @@FETCH_STATUS=0
BEGIN
if(@oldFolderId != @folderid)
begin
set @orderCursor = 0;
set @oldFolderId = @folderid;
end
set @orderCursor = @orderCursor + 1;
UPDATE FILES SET [Order]= @orderCursor WHERE Id=@fileid;
-- 取下一条记录
FETCH NEXT FROM C_FILE INTO @fileid,@folderid,@order;
END
-- 关闭游标
CLOSE C_FILE;
-- 释放游标
DEALLOCATE C_FILE;
本文采用 知识共享署名 4.0 国际许可协议 进行许可