当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server数据库技术(85)

MSSQL
SQL语句技巧:按月统计数据
分页 SQLServer存储过程
SQL语句的基本语法
模糊查询
直接循环写入数据
删除重复记录
删除重复的记录,并保存第一条记录或保存最后一条记录
MSSQL数据库的定期自动备份计划。
一个比较实用的大数据量分页存储过程
数据库存储过程分页显示
ACCESS数据库的压缩,备份,还原,下载,删除的实现
sql编程的几个常识
SQL连接查询介绍
Sql Server基本函数
分页的存储过程
SQL Server全文索引服务
如何在SQLSERVER中快速有条件删除海量数据
整理一下SQLSERVER的排序规则
SQL Server各种日期计算方法(收藏)
全文检索技术 sql server

MSSQL 中的 SQL Server数据库技术(85)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 38 ::
收藏到网摘: n/a

13.5.1 关闭游标
    1、使用CLOSE 命令关闭游标
     在处理完游标中数据之后必须关闭游标来释放数据结果集和定位于数据记录上的锁。CLOSE 语句关闭游标,但不释放游标占用的数据结构。如果准备在随后的使用中再次打开游标,则应使用CLOSE 命令。其关闭游标的语法规则为:
 CLOSE { { [GLOBAL] cursor_name } | cursor_variable_name }
    2、自动关闭游标
    我们已经了解到游标可应用在存储过程、触发器和Transact_SQL 脚本中。如果在声明游标与释放游标之间使用了事务结构,则在结束事务时游标会自动关闭。其具体的情况如下所示:
(1)、声明一个游标
(2)、打开游标
(3)、读取游标
(4)、BEGIN TRANSATION
(5)、数据处理
(6)、COMMIT TRANSATION
(7)、回到步骤3
    在这样的应用环境中。当从游标中读取一条数据记录进行以BEGIN TRANSATION为开头,COMMIT TRANSATION 或ROLLBACK 为结束的事务处理时,在程序开始运行后,第一行数据能够被正确返回,经由步骤7, 程序回到步骤3, 读取游标的下一行,此时常会发现游标未打开的错误信息。其原因就在于当一个事务结束时,不管其是以COMMIT TRANSATION 还是以ROLLBACK TRANSATION 结束,MS SQL SERVER 都会自动关闭游标,所以当继续从游标中读取数据时就会造成错误。
    解决这种错误的方法就是使用SET 命令将CURSOR_CLOSE_ON_COMMIT 这一参数设置为OFF 状态。其目的就是让游标在事务结束时仍继续保持打开状态,而不会被关闭。使用SET 命令的格式为:
 SET CURSOR_CLOSE_ON_COMMIT OFF

13.5.2 释放游标
    在使用游标时,各种针对游标的操作或者引用游标名,或者引用指向游标的游标变量。当CLOSE 命令关闭游标时,并没有释放游标占用的数据结构。因此常使用DEALLOCATE 命令。通过该命令可以删除掉游标与游标名或游标变量之间的联系,并且释放游标占用的所有系统资源。其语法规则为:
    DEALLOCATE { { [GLOBAL] cursor_name } | @cursor_variable_name}
    各参数的含义参看13.3 打开游标一节。
    当使用DEALLOCATE @cursor_variable_name 来删除游标时,游标变量并不会被释放,除非超过使用该游标的存储过程、触发器的范围(即游标的作用域)。

13.5.3 游标变量
    游标变量是从MS SQL SERVER 7 版本才开始使用的一种新增数据类型。定义一个游标变量主要有两种方法。
    首先我们先声明一个游标。


    使用SET 语句将一游标赋值给游标变量:

    将声明游标语句放在游标赋值语句中,如下所示:

    例13-5: 下面给出一个具体完整的例子,在该例子中我们对DEALLOCATE 命令将有更加清晰的了解。