阅读以下代码,在SQLserver上执行。分析结果,并总结游标的使用。T-SQL中使用游标。基础概念参考教材P246,P250
IF (exists (select * from sys.objects where name = 'proc_cursor'))
DROP PROCEDURE proc_cursor
GO
CREATE PROCEDURE proc_cursor --创建存储过程(PROCEDURE)名为proc_cursor
AS
--DECLARE声明
DECLARE @Sno char(9)--定义变量
DECLARE @Sname char(20)--定义变量
DECLARE mycursor CURSOR FOR select Sno,Sname from Student --声明游标(CURSOR)名为mycursor;用到Student表
OPEN mycursor --打开游标
FETCH NEXT FROM mycursor INTO @Sno,@Sname --FETCH取值
WHILE(@@FETCH_STATUS=0) --遍历所有的数据 FETCH_STATUS取状态
BEGIN
PRINT '游标成功取出一条数据:'
PRINT @Sno
PRINT @Sname
PRINT '********************'
FETCH NEXT FROM mycursor INTO @Sno,@Sname --取下一条游标数据
END
CLOSE mycursor --关闭游标
DEALLOCATE mycursor --删除游标
GO
EXEC proc_cursor --EXEC执行
GO
执行:
游标的使用
IF (exists (select * from sys.objects where name = '过程名'))
DROP PROCEDURE 过程名
GO --若删除,则:'CREATE/ALTER PROCEDURE' 必须是查询批次中的第一个语句。
CREATE PROCEDURE 过程名 --创建存储过程(PROCEDURE)
AS
--DECLARE声明变量、游标(CURSOR):
DECLARE @变量名 char(9)--定义变量
DECLARE 游标名 CURSOR FOR select...from... --声明游标
OPEN 游标名 --打开游标
FETCH NEXT FROM 游标名 INTO @变量名,@变量名,... --FETCH取值,变量取对应(select)游标值
WHILE(@@FETCH_STATUS=0) --遍历所有的数据 FETCH_STATUS取状态
BEGIN
--PRINT输出
PRINT @变量名 --输出变量
PRINT '******' --输出字符串
FETCH NEXT FROM 游标名 INTO @变量名,@变量名,... --取下一条游标数据
END
CLOSE 游标名 --关闭游标
DEALLOCATE 游标名 --删除游标
GO
EXEC 过程名 --EXEC执行
GO
DECLARE 游标名 CURSOR FOR select...from... --声明游标
OPEN 游标名 --打开游标
FETCH NEXT FROM 游标名 INTO @变量名,@变量名,... --变量取游标值
CLOSE 游标名 --关闭游标
DEALLOCATE 游标名 --删除游标
GO