不同主语言对使用游标的语法也不相同,在此就不说了,想知道的可以去查看相关文档
标准SQL中游标的使用.
EXEC SQL DECLARE SX CURSOR FOR
SELECT Sno,Sname,Ssex,Sage
FROM Student
WHERE Sdept = :deptname;--:deptname是前面声明的主变量
--说明游标
EXEC SQL OPEN SX; --打开游标
for(;;)
{EXEC SQL FETCH SX INTO :HSno,:HSname,:HSsex,:HSage;...}
--循环,推进游标
...
EXEC SQL UPDATE Student
SET Sage = :NEWAGE
WHERE CURRENT OF SX;
--对游标当前指向的记录的Sage进行更新
EXEC SQL CLOSE SX; --关闭游标
T-SQL中游标的使用
IF (exists (select * from sys.objects where name = 'proc_cursor'))
DROP PROCEDURE proc_cursor
GO
CREATE PROCEDURE proc_cursor -- 存储过程
AS
DECLARE @Sno char(9)--定义变量
DECLARE @Sname char(20)--定义变量
DECLARE mycursor CURSOR FOR select Sno,Sname from Student --声明游标
OPEN mycursor --打开游标
FETCH NEXT FROM mycursor INTO @Sno,@Sname
WHILE(@@FETCH_STATUS=0) --遍历所有的数据
BEGIN
PRINT '游标成功取出一条数据:'
PRINT @Sno
PRINT @Sname
PRINT '********************'
FETCH NEXT FROM mycursor INTO @Sno,@Sname --取下一条游标数据
END
CLOSE mycursor --关闭游标
DEALLOCATE mycursor --删除游标
GO
EXEC proc_cursor
GO
这是表中的数据
执行结果:
对游标的使用,想到了以前用C语言从文件中读取数据,思路基本一致,只是语法变了变.