菜鸟的DBA之路[MSSQL篇] 详解游标
前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标。
概念
简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理。
观点
正因为游标可以将结果集一条条取出处理,所以会增加服务器的负担。再者使用游标的效率远远没有使用默认的结果集效率高,在默认结果集中,从客户端发送到服务器的唯一一个数据包是包含需执行语句的数据包。而在使用服务器游标时,每一个FETCH语句都必须从客户端发送到服务器,然后在服务器中将它解析并编译为执行计划。除非要再sqlserver上进行很复杂的数据操作。
基本知识
一. SQL Server 2005 支持两种请求游标的方法
1.Transact-SQL (支持 SQL-92);
2.数据库应用程序编程接口(API)游标函数(ADO、OLE DB、ODBC)应用程序不能混合使用这两种请求游标的方法。ODBC 还支持客户端游标,即在客户 端实现的游标。
二. 游标根据范围可以分成全局游标和局部游标。全局游标可以在整个会话过程中使用,局部游标只能在一个T-SQL批、存储过程或触发器中执行,当执行完毕后局部游标会自动删除。
三. 游标的基本操作,定义游标、打开游标、循环读取游标、关闭游标和删除游标。
语法基础(SQL-92)
以SQL-92方式为例
初始数据PPS_App_Infomation
其中 cur_Pay为游标名称 INSENSITIVE 用于设置游标是否使用副本 OPEN 打开游标 fetch循环读入游标 DEALLOCATE 删除游标
INSENSITIVE
举个简单的例子 在游标读取过程中 我们将熬夜虫子改成早起虫子看看 是否添加INSENSITIVE 会是什么样的区别
前一个有INSENSITIVE 关键字使用数据副本,后一个无INSENSITIVE 是即时数据
游标的敏感性行为定义了对基行(用于建立游标)所做的更新是否对游标可见。敏感性也定义了能否通过游标进行更新。
scroll
我们再来看看scroll关键字
01 DECLARE @Parm01 varchar(100)
02 DECLARE @Parm02 varchar(100)
03 DECLARE @Parm03 varchar(100)
04 DECLARE cur_Pay INSENSITIVE SCROLL CURSOR FOR
05 SELECT GameName,CreateUser,CreateDate FRO
- 发表评论
-
- 最新评论 更多>>