文档详情

游标和事务(例题).doc

发布:2017-03-30约5.64千字共6页下载文档
文本预览下载声明
游标的应用 利用所学知识,结合示例分析如何创建、使用游标。 【例12-7】创建游标,并读取游标的数据。显示学生表(tblStudents)的信息。 USE CJMS --使用数据库CJMS DECLARE ST_cursor SCROLL CURSOR --声明游标名 FOR SELECT * FROM tblStudents --标准游标 --FOR READ ONLY 只读游标 --FOR UPDATE 更新游标 OPEN ST_cursor --打开游标 FETCH FIRST FROM ST_cursor --返回游标中的第一行 FETCH NEXT FROM ST_cursor --返回游标中的当前记录的下一行 FETCH LAST FROM ST_cursor --返回游标中的最后行 FETCH PRIOR FROM ST_cursor --返回游标中的最前行 FETCH ABSOLUTE 2 FROM ST_cursor --返回游标中的第二行 FETCH RELATIVE 2 FROM ST_cursor --返回游标中的当前位置起向后第二行 CLOSE ST_cursor --关闭游标 DEALLOCATE ST_cursor --释放游标 执行该SQL语句,显示如图12-1所示效果。 图12-1游标的基本操作 【例12-8】利用游标更新数据,首先查看tblStudents表中的每一行,将Classes等于‘电子0801’的记录的Department改为‘电子工程系’。 USE CJMS --使用数据库CJMS DECLARE @studentId nchar(10),@name nchar(10),@sex nchar(2), @classes nchar(50),@Departments nchar(50) DECLARE edit_cursor CURSOR --声明游标名 FOR SELECT StudentID,Sname,Sex,Classes,Department FROM tblStudents --标准游标 --FOR READ ONLY 只读游标 FOR UPDATE --更新游标 OPEN edit_cursor --打开游标 FETCH NEXT FROM edit_cursor INTO @studentId,@name,@sex,@classes,@Departments --从游标中提取第一行 WHILE @@FETCH_STATUS=0 BEGIN IF @classes =电子0801 UPDATE tblStudents SET Department=电子工程系 WHERE CURRENT OF edit_cursor FETCH NEXT FROM edit_cursor INTO @studentId,@name,@sex,@classes,@Departments --从游标中提取下一行 END CLOSE edit_cursor --关闭游标 DEALLOCATE edit_cursor --释放游标 运行该SQL代码,显示如图12-2所示的效果。 图12-2 利用游标更新数据 【例12-9】利用游标判断记录是否存在,查找tblStudents表中StudentID等于‘S200820005’的记录是否存在。 USE CJMS DECLARE SER_CURSOR CURSOR FOR SELECT * FROM tblStudents WHERE StudentIDOPEN SER_cursor FETCH NEXT FROM SER_CURSOR IF @@FETCH_STATUS =0 PRINT 该记录存在 ELSE PRINT 该记录不存在 CLOSE SER_cursor DEALLOCATE SER_cursor 运行该SQL代码,显示如图12-3所示的效果。 图12-3利用游标判断记录是否存在 事务的应用 【例12-10】在成绩管理系统中删除课程信息表(tblCourses)中“操作系统(C8030268)”这门课程,将学生课程成绩表(tblScore)中的“操作系统”的课程号(C8030268)改为“计算机操作系统”的课程号(C8030268)。 BEGIN TRANSACTION
显示全部
相似文档