SQL中游标的使用,详解游标

类型:

  1.普通游标   唯有NEXT操作

  2.轮转游标 有二种操作

概念

Cursor

DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
     [ FORWARD_ONLY | SCROLL ]
     [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
     [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
     [ TYPE_WARNING ]
     FOR select_statement
     [ FOR UPDATE [ OF column_name [ ,…n ] ] ]
[;]

1。能够在Declare语句中为cursor赋值,也足以利用SET来为游标赋值;
2。LOCAL标明所定义的游标在此时此刻上下文中可知(当前批处理/存款和储蓄进度/函数中可知),
  
GLOBAL标明所定义的游标在脚下连日(SESSION)中可知,包蕴调用的贮存进程/函数内部可知,暗中认可时选用GLOBAL;
3。FORWARD_ONLY标明定义游标只好从结果集顶部向尾部移动,访问的是sTATIC结果集;SCROLL标明游标能够向自由方向移动。
4。STATIC标明游标所操作的结果集为静态,执行时将结果集COPY放入TempDB中,使得后续或外部操作修改数据任然不会影响游标操作的结果集;
  
DYNAMIC则与STATIC相反,当数码在继承操作或外部操作中被涂改时,游标读取的多少是修改后的多寡;
  
KEYSET介于STATIC与DYNAMIC之间,只将游标结果集中每行的主键保存到TmepDB中;
   FAST_FORWAD依照上下文接纳使用STATIC或DYNAMIC中一种
5。READ_ONLY标明游标只读取多少而不做其余改动操作
   SCROLL_LOCKS标明游标锁定结果集中数据,幸免外部操作修改数据
  
OPTIMISTIC不会锁定结果集中数据,但当在游标中更新数据时,要是该数量尚未被外表操作更新,则游标更新可能成功,反之则失利;
6。使用OPEN CU卡宴SO奥迪Q5来开辟触发器
7。使用FETCH [NEXT|PRIOR|FIRST|LAST|ABSOLUTE(N)|RELATIVE(N)] FROM
cursorName INTO 来获取数据;
8。使用CLOSE来关闭游标
9。使用DEALLOCATE来刑释游标

–=============================================================================================
@@FETCH_STATUS枚举值:
0:The FETCH statement was successful.
-1:The FETCH statement failed or the row was beyond the result set.

诚如意况下,我们用SELECT那几个查询语句时,都以指向的一行记录而言,
如果要在查询分析器中对多行记录(即记录集)进行读取操作时,则须求选用到游标或WHILE等循环

1.平时游标

DECLARE @username varchar(20),@UserId varchar(100)
DECLARE cursor_name CURSOR FOR --定义游标
    SELECT TOP 10 UserId,UserName FROM UserInfo
    ORDER BY UserId DESC
OPEN cursor_name --打开游标
FETCH NEXT FROM cursor_name INTO  @UserId,@username  --抓取下一行游标数据
WHILE @@FETCH_STATUS = 0
    BEGIN
        PRINT '用户ID:'+@UserId+'            '+'用户名:'+@username
        FETCH NEXT FROM cursor_name INTO @UserId,@username
    END
CLOSE cursor_name --关闭游标
DEALLOCATE cursor_name --释放游标

结果:

用户ID:zhizhi            用户名:邓鸿芝
用户ID:yuyu            用户名:魏雨
用户ID:yujie            用户名:李玉杰
用户ID:yuanyuan            用户名:王梦缘
用户ID:YOUYOU            用户名:lisi
用户ID:yiyiren            用户名:任毅
用户ID:yanbo            用户名:王艳波
用户ID:xuxu            用户名:陈佳绪
用户ID:xiangxiang            用户名:李庆祥
用户ID:wenwen            用户名:魏文文

简简单单点说游标的坚守正是储存一个结果集,并依据语法将这一个结果集的数码逐条处理。

-2: The row fetched is missing.

DECLARE @userId INT;
DECLARE @userName NVARCHAR(200);
DECLARE myCursor CURSOR READ_ONLY FAST_FORWARD FOR
SELECT UserId,UserName FROM dbo.Users

OPEN myCursor
FETCH NEXT FROM myCursor INTO @userId,@userName
WHILE(@@FETCH_STATUS=0)
BEGIN
PRINT @userName
FETCH NEXT FROM myCursor INTO @userId,@userName
END

CLOSE myCursor
DEALLOCATE myCursor

游标的门类:
  ① 、静态游标(不检查和测试数据行的变型)
  二 、动态游标(反映全数数据行的变动)
  叁 、仅向前游标(不援助滚动)
  ④ 、键集游标(能呈现修改,但不能够精确反映插入、删除)

2.轮转游标

--带SCROLL选项的游标
SET NOCOUNT ON
DECLARE C SCROLL CURSOR FOR  --SCORLL 后,有了更多的游标操作(滚动游标)
    SELECT TOP 10 UserId,UserName FROM UserInfo
    ORDER BY UserId DESC
OPEN C 
FETCH LAST FROM C   --最后一行的数据,并将当前行为指定行
FETCH ABSOLUTE 4 FROM C  --从第一行开始的第4行数据,并将当前行为指定行  这里的n可正可负,n>0 往下翻,n<0 往上翻
FETCH RELATIVE 3 FROM C  --相对于当前行的后3行数据,并将当前行为指定行  这里的n可正可负
FETCH RELATIVE -2 FROM C --相对于当前行的前2行数据,并将当前行为指定行
FETCH PRIOR FROM C   ----相对于当前行的前1行数据
FETCH FIRST FROM C   --刚开始第一行的数据,并将当前行为指定行
FETCH NEXT FROM C   --相对于当前行的后1行数据

CLOSE C
DEALLOCATE C

结果(能够参见第3个结果分析):

997755.com澳门葡京 1


SELECT COUNT(1) FROM dbo.Users

1.尽量防止使用游标
2.用到完游标一定得倒闭并释放
3.即使得以,尽量采取只读(READ_ONLY)向前(FAST_FORWARD)游标
4.防止大结果集操作

 

 

游标使用各样:
   一 、定义游标
   贰 、打开游标
   ③ 、使用游标
   肆 、关闭游标
   五 、释放游标

具体FETCH用法:

FETCH   
          [ [ NEXT | PRIOR | FIRST | LAST   
                    | ABSOLUTE { n | @nvar }   
                    | RELATIVE { n | @nvar }   
               ]   
               FROM   
          ]   
{ { [ GLOBAL ] cursor_name } | @cursor_variable_name }   
[ INTO @variable_name [ ,...n ] ]

观点

Transact-SQL:
declare 游标名 cursor [LOCAL | GLOBAL][SQL中游标的使用,详解游标。FORWARD_ONLY |
SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY |
SCROLL_LOCKS]  
  for selet语句   [for  update[of 列名[,列名]]
 注:LOCAL 局地游标     GLOBAL 全局游标
     FORWARD_ONLY 仅向前  SCROLL 滚动
     STATIC 静态  KEYSET 键集 DYNAMIC 动态
     READ_ONLY 只读 SCROLL_LOCKS 锁定游标当前行

Arguments

NEXT
Returns the result row immediately following the current row and
increments the current row to the row returned. If FETCH NEXT is the
first fetch against a cursor, it returns the first row in the result
set. NEXT is the default cursor fetch option.

PRIOR
Returns the result row immediately preceding the current row, and
decrements the current row to the row returned. If FETCH PRIOR is the
first fetch against a cursor, no row is returned and the cursor is left
positioned before the first row.

FIRST
Returns the first row in the cursor and makes it the current row.

LAST
Returns the last row in the cursor and makes it the current row.

ABSOLUTE { n| @nvar}
If n or @nvar is positive, returns the row n rows from the front of the
cursor and makes the returned row the new current row. If n or @nvar is
negative, returns the row n rows before the end of the cursor and makes
the returned row the new current row. If n or @nvar is 0, no rows are
returned. n must be an integer constant and @nvar must be smallint,
tinyint, or int.

RELATIVE { n| @nvar}
If n or @nvar is positive, returns the row n rows beyond the current row
and makes the returned row the new current row. If n or @nvar is
negative, returns the row n rows prior to the current row and makes the
returned row the new current row. If n or @nvar is 0, returns the
current row. If FETCH RELATIVE is specified with n or @nvar set to
negative numbers or 0 on the first fetch done against a cursor, no rows
are returned. n must be an integer constant and @nvar must be smallint,
tinyint, or int.

GLOBAL
Specifies that cursor_name refers to a global cursor.

cursor_name
Is the name of the open cursor from which the fetch should be made. If
both a global and a local cursor exist with cursor_name as their name,
cursor_name to the global cursor if GLOBAL is specified and to the
local cursor if GLOBAL is not specified.

@cursor_variable_name
Is the name of a cursor variable referencing the open cursor from which
the fetch should be made.

INTO @variable_name[ ,…n]
Allows data from the columns of a fetch to be placed into local
variables. Each variable in the list, from left to right, is associated
with the corresponding column in the cursor result set. The data type of
each variable must either match or be a supported implicit conversion of
the data type of the corresponding result set column. The number of
variables must match the number of columns in the cursor select list.

 

正因为游标能够将结果集一条条取出处理,所以会大增服务器的承受。再者使用游标的频率远远没有行使默许的结果集效能高,在默许结果集中,从客户端发送到服务器的绝无仅有一个数据包是富含需举办语句的数据包。而在使用服务器游标时,每3个FETCH语句都不能够不从客户端发送到服务器,然后在服务器准将它解析并编写翻译为施行计划。除非要再sqlserver上进展很复杂的数据操作。

获取游标的多少
  FETCH [[NEXT | PRIOR | FIRST | LAST | 
  ABSOLUTE{ n | @nvar | RELATIVE { n | @nvar}]
  From ] 游标名 [into 变量]
  注:
    NEXT  下一行  PRIOR  上一行  FIRST 第一行
    LAST  最后一行  ABSOLUTE n 第n行
    RELATIVE n 当前地点上马的第n行
    into 变量  把近来行的各字段值赋值给变量


游标状态变量:
    @@fetch_status  游标状态
         0 成功  -1 失败  -2 丢失
    @@cursor_rows 游标中结果集中的行数
        n 行数 -1 游标是动态的  0 空集游标
操作游标的近日行:
   current of 游标名

基本知识

  例1:利用游标对查询的数量集进行遍历

一. SQL Server 二〇〇五 帮衬两种请求游标的不二法门

use pubs

  1.Transact-SQL (支持 SQL-92);

go

  2.数据库应用程序编制程序接口(API)游标函数(ADO、OLE
DB、ODBC)应用程序无法混合使用那二种请求游标的主意。ODBC
还扶助客户端游标,即在客户  端落成的游标。

declare @auid char(12),@aulname varchar(20),@aufname varchar(20), @st char(2),@auinfo varchar(50)

二.
游标依据范围能够分成全局游标和一部分游标。全局游标能够在全部会话进程中运用,局地游标只幸亏贰个T-SQL批、存储进度或触发器中实施,当执行完成后有个别游标会自动删除。

declare auth_cur cursor for

三.
游标的基本操作,定义游标、打开游标、循环读取游标、关闭游标和删除游标。

select au_id, au_lname, au_fname, state


from authors

语法基础(SQL-92)

open auth_cur

以SQL-92方式为例

fetch next from auth_cur into @auid,@aulname,@aufname, @st

千帆竞发数据PPS_App_Infomation

while (@@fetch_status=0)

997755.com澳门葡京 2

  begin

?

    print ‘笔者编号: ‘+@auid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DECLARE @Parm01 varchar(100)
DECLARE @Parm02 varchar(100)
DECLARE @Parm03 varchar(100)
DECLARE cur_Pay INSENSITIVE CURSOR FOR
    SELECT GameName,CreateUser,CreateDate FROM [PicPromotion].[dbo].[PPS_App_Infomation]
OPEN cur_Pay
FETCH cur_Pay INTO @Parm01 , @Parm02 , @Parm03
WHILE @@FETCH_STATUS = 0
BEGIN
    WAITFOR DELAY '00:00:01'
    PRINT @Parm01+'__'+@Parm02+'__'+@Parm03
    FETCH cur_Pay INTO @Parm01 , @Parm02 , @Parm03
END
DEALLOCATE cur_Pay

    print ‘俺姓名: ‘+@aulname+’,’+@aufname

其中 cur_Pay为游标名称 INSENSITIVE 用于安装游标是还是不是接纳副本 OPEN
打开游标 fetch循环读入游标 DEALLOCATE 删除游标

    print ‘所在州: ‘+@st

INSENSITIVE

    print ‘————————–‘

举个简易的例子 在游标读取进度中 我们将熬夜虫子改成早起虫子看看
是还是不是添加INSENSITIVE 会是如何的分化

    fetch next from auth_cur into @auid,@aulname,@aufname, @st

997755.com澳门葡京 3
997755.com澳门葡京 4

  end

前2个有INSENSITIVE 关键字选择数据副本,后贰个无INSENSITIVE 是即时数据

close auth_cur

游标的敏感性行为定义了对基行(用于建立游标)所做的立异是还是不是对游标可知。敏感性也定义了行还是不行通过游标举行立异。

deallocate auth_cur

scroll

例2:利用游标修改、删除数据

大家再来看看scroll关键字

declare auth_cur cursor scroll for

?

select au_id, au_lname, au_fname, state

1
2
3
4
5
6
7
8
9
10
11
DECLARE @Parm01 varchar(100)
DECLARE @Parm02 varchar(100)
DECLARE @Parm03 varchar(100)
DECLARE cur_Pay INSENSITIVE SCROLL CURSOR FOR
    SELECT GameName,CreateUser,CreateDate FROM [PicPromotion].[dbo].[PPS_App_Infomation]
OPEN cur_Pay
BEGIN     
    FETCH LAST FROM cur_Pay INTO @Parm01 , @Parm02 , @Parm03
    PRINT @Parm01+'__'+@Parm02+'__'+@Parm03
END
DEALLOCATE cur_Pay

from authors for update of au_lname

地点的先后是ok的 成功输出
熬夜虫子__Maoya__06 20 2009  1:32PM

open auth_cur

一经去掉SCROLL关键字会提醒

declare @rowcount int

消息 16911,级别 16,状态 1,第 8
行 fetch: 提取类型 last
不能够与只进游标一起使用。

set @rowcount = 6

SCROLL通过Transact-SQL服务器游标检索特定行。假若SCROLL
选项未在SQL-92样式的DECLARE CUHavalSOTucson语句中钦定,则NEXT是唯一受协理的FETCH
选项。假若在SQL-92样式的DECLARE CU牧马人SO普拉多语句中钦赐了SCROLL
选项,则扶助具备FETCH 选项。

fetch absolute @rowcount from auth_cur 
–将变量@rowcount标识的行设置为眼下行

FETCH 语法

–上面1行是接纳游标实行修改操作

除开last参数(再次来到游标中的最终一行并将其当做当前行)再介绍下别的的

update authors set au_lname=’张’ where current of auth_cur
–修改游标中的当前行

NEXT 紧跟当前行再次回到结果行,并且当前行递增为再次回到行。假诺FETCH
NEXT为对游标的第三回提取操作,则赶回结果集中的首先行NEXT为默许的游标提取选项。

–下边1行是选拔游标进行删除操作

PMuranoIO帕杰罗 再次回到紧邻当前行后边的结果行,并且当前行递减为再次来到行。假诺 FETCH
P奇骏IO揽胜 为对游标的率先次提取操作,则没有行重回并且游标置于第三行从前。

delete from authors where current of auth_cur

FI奥迪Q7ST 重回游标中的第3行并将其当作当下行。

 

ABSOLUTE { n | @nvar} 若是 n 或 @nvar 为正数,则赶回从游标头起始的第 n
行,并将回来行变成新的最近行。要是 n 或 @nvar
为负数,则赶回从游标末尾起初的第 n 行,并将回到行变成新的当前行。假使 n
或 @nvar 为 0,则不再次来到行。n 必须是整数常量,并且 @nvar 的数据类型必须为
smallint、tinyint 或 int。

 

RELATIVE { n | @nvar} 如果 n 或 @nvar 为正数,则赶回从当下行开首的第 n
行,并将赶回行变成新的脚下行。假若 n 或 @nvar 为负数,则赶回当前行在此之前第
n 行,并将重回行变成新的日前行。假使 n 或 @nvar 为
0,则赶回当前行。在对游标达成第二次提取时,倘诺在将 n 或 @nvar
设置为负数或 0 的景况下内定 FETCH RELATIVE,则不再次来到行。n
必须是整数常量,@nvar 的数据类型必须为 smallint、tinyint 或 int。

转:果子 
 SQL中游标的选择

概念全局游标

FETCH NEXT FROM GLOBAL cur_Pay
INTO @Parm01 , @Parm02 , @Parm03

如若未钦点 GLOBAL,则指部分游标。

READ ONLY  与 UPDATE

(下文中只摘要不重复或许要求的代码)

?

1
2
3
4
5
6
7
DECLARE cur_Pay INSENSITIVE SCROLL CURSOR FOR
    SELECT GameName,CreateUser,CreateDate FROM [PicPromotion].[dbo].[PPS_App_Infomation]
    FOR READ ONLY
    OPEN cur_Pay
BEGIN 
       
    FETCH LAST FROM cur_Pay INTO @Parm01 , @Parm02 , @Parm03

?

1
2
3
         UPDATE PPS_App_Infomation SET GameName ='熬夜虫子forupdate' WHERE CURRENT OF cur_Pay
    PRINT @Parm01+'__'+@Parm02+'__'+@Parm03
END

音讯 16929,级别 16,状态 1,第 9
行 游标是只读的。 语句已告一段落。熬夜虫子__Maoya__06 20 2009  1:32PM

?

1
2
3
DECLARE cur_Pay INSENSITIVE SCROLL CURSOR FOR
    SELECT GameName,CreateUser,CreateDate FROM [PicPromotion].[dbo].[PPS_App_Infomation]
    FOR UPDATE

信息 1048,级别 15,状态 1,第 7
行 游标选项 FO瑞虎 UPDATE 和
INSENSITIVE 抵触。

?

1
2
3
4
5
6
7
8
9
10
DECLARE cur_Pay  SCROLL CURSOR FOR
    SELECT GameName,CreateUser,CreateDate FROM [PicPromotion].[dbo].[PPS_App_Infomation]
    FOR Update
    OPEN cur_Pay
BEGIN 
    FETCH LAST FROM cur_Pay INTO @Parm01 , @Parm02 , @Parm03
    UPDATE PPS_App_Infomation SET GameName ='熬夜虫子forupdate' WHERE CURRENT OF cur_Pay   
    FETCH LAST FROM cur_Pay INTO @Parm01 , @Parm02 , @Parm03
    PRINT @Parm01+'__'+@Parm02+'__'+@Parm03
END

(1 行受影响) 熬夜虫子forupdate__Maoya__06 20 2009  1:32PM

READ
ONLY分化意通过游标进行定位更新,并且不持有针对组成结果集的行的锁。UPDATE与READ
ONLY相对,并且UPDATE能够定义到可更新的列。


语法基础(SQL SE帕杰罗VE帕Jero扩充格式)

基本功数据同上

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE @Parm01 varchar(100)
DECLARE @Parm02 varchar(100)
DECLARE @Parm03 varchar(100)
DECLARE cur_Pay  CURSOR
GLOBAL --和SQL-92格式同理 可选LOCAL本地游标
SCROLL --可选FORWARD_ONLY 指定游标只能从第一行滚动到最后一行
DYNAMIC --和上一行参数关联 static表示临时副本 DYNAMIC直接反映在滚动游标时对结果集内行所做的修改
        --keyset表示除了唯一键其他都获取最新值 FAST_FORWARD性能优化的FOR_WARD READONLY游标
OPTIMISTIC --可选READ_ONLY同上 SCROLL_LOCKS定位更新并对当前数据加锁 OPTIMISTIC想当与乐观锁可以进行更新动作但是如果读取的数据被更新会导致操作失败
TYPE_WARNING --如果游标从所请求的类型隐形转换到另一种类型,则给客户端发送警告
FOR
    SELECT GameName,CreateUser,CreateDate FROM [PicPromotion].[dbo].[PPS_App_Infomation]
    FOR UPDATE
OPEN cur_Pay
BEGIN 
    FETCH LAST FROM cur_Pay INTO @Parm01 , @Parm02 , @Parm03
    PRINT @Parm01+'__'+@Parm02+'__'+@Parm03
END
DEALLOCATE cur_Pay

有关语法都直接注释在code里了 和SQL-92相似的一些就不赘述了


游标应用

概念游标变量cursor_variable_name

?

declare @tcur cursor
set @tcur = cursor for SELECT * FROM PPS_App_Infomation

开拓游标 OPEN {{[GLOBAL]cursor_name}|cursor_variable_name}

关闭游标 CLOSE{{[GLOBAL]cursor_name}|cursor_variable_name}

释放游标 DEALLOCATE{{[GLOBAL]cursor_name}|cursor_variable_name}

获取游标行数 @@CU宝马X3SO帕杰罗_ROWS

?

1
2
3
4
5
6
DECLARE cur_Pay INSENSITIVE SCROLL CURSOR FOR
    SELECT GameName,CreateUser,CreateDate FROM [PicPromotion].[dbo].[PPS_App_Infomation]
OPEN cur_Pay
BEGIN     
    PRINT @@CURSOR_ROWS
END

输出 4

检查和测试fetch操作的景况@@FETCH_STATUS 重临值0表示fetch语句执行成功
-1表示fetch语句执行破产或此行不再结果集中 -2表示所要读取的数量消息不存在

?

1
2
3
4
5
6
7
8
9
DECLARE cur_Pay INSENSITIVE SCROLL CURSOR FOR
    SELECT GameName,CreateUser,CreateDate FROM [PicPromotion].[dbo].[PPS_App_Infomation]
FETCH next FROM cur_Pay    
OPEN cur_Pay
BEGIN     
    if(@@FETCH_STATUS = 0) print('FETCH 语句成功')
    if(@@FETCH_STATUS = -1) print('FETCH 语句失败或行不在结果集中')
    if(@@FETCH_STATUS = -2) print('提取的行不存在')
END

新闻 16917,级别 16,状态 2,第 6
行 游标未打开。 FETCH 语句退步或行不在结果集中

游标嵌套

在游标中运用另三个游标。一般的话使用游标已经很占用系统财富了,再嵌套游标会大影响效能,本文只作参考用。

添加一张数据表PPS_AppConfig_Infomation

997755.com澳门葡京 5

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
DECLARE @Parm01 int
DECLARE @Parm02 varchar(100)
DECLARE @Parm03 varchar(100)
DECLARE @Parm04 varchar(100)
DECLARE cur_Pay INSENSITIVE SCROLL CURSOR FOR
    SELECT AppId,GameName,CreateUser,CreateDate FROM PPS_App_Infomation
OPEN cur_Pay
BEGIN 
   FETCH next FROM cur_Pay  INTO @Parm01 , @Parm02 , @Parm03 ,@Parm04
   WHILE(@@FETCH_STATUS =0)
   BEGIN
        PRINT('当前游戏编号'+cast(@Parm01 as varchar(4)) +' 游戏名称为'+@Parm02)
        DECLARE sub_cur CURSOR FOR
        SELECT WM_Type,WM_Text FROM PPS_AppConfig_Infomation WHERE AppId = @Parm01
        DECLARE @Parm05 varchar(100)
        DECLARE @Parm06 varchar(100)
        OPEN sub_cur
        FETCH next FROM sub_cur INTO @Parm05 , @Parm06
        WHILE(@@FETCH_STATUS =0)
        BEGIN
            PRINT('当前游戏类型'+@Parm05+'默认软文为'+@Parm06)
            FETCH next FROM sub_cur INTO @Parm05 , @Parm06
        END
        CLOSE sub_cur
        DEALLOCATE sub_cur
        FETCH next FROM cur_Pay INTO @Parm01 , @Parm02 , @Parm03 ,@Parm04
   END
   
END
 
DEALLOCATE cur_Pay

输出结果为

997755.com澳门葡京 6

游标关联的系统存款和储蓄进度

sp_cursor_list 报告当前为总是打开的服务器游标的性质。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DECLARE cur_Pay INSENSITIVE SCROLL CURSOR FOR
    SELECT AppId,GameName,CreateUser,CreateDate FROM PPS_App_Infomation
OPEN cur_Pay
   DECLARE @REPORT CURSOR
BEGIN 
   FETCH next FROM cur_Pay 
   WHILE(@@FETCH_STATUS =0)
   BEGIN          
            FETCH next FROM cur_Pay
   END
   exec sp_cursor_list @cursor_return = @REPORT output,@cursor_scope =3  --设置1时报告所有本地游标 设置2时报告所有全局游标 设置3时报告所有本地游标和全局游标
END
CLOSE cur_Pay
DEALLOCATE cur_Pay

 

997755.com澳门葡京 7

sp_describe_cursor查看游标的大局个性 效用和sp_cursor_list差不多。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DECLARE cur_Pay INSENSITIVE SCROLL CURSOR FOR
    SELECT GameName,CreateUser,CreateDate FROM PPS_App_Infomation
OPEN cur_Pay
   DECLARE @REPORT CURSOR
BEGIN 
   FETCH next FROM cur_Pay 
   WHILE(@@FETCH_STATUS =0)
   BEGIN          
            FETCH next FROM cur_Pay
   END
   exec sp_describe_cursor @cursor_return = @REPORT output,@cursor_source =N'globle',@cur_identity=N'cur_Pay'
         --@cursor_source 可选N'local',N'globle',N'variable' 选择本地、全局还是变量
         --@cur_identity 查看的游标名称
END
CLOSE cur_Pay
DEALLOCATE cur_Pay

997755.com澳门葡京, 

997755.com澳门葡京 8

关周全据库中的操作会对整个行集起功效。由 SELECT
语句重临的行集包括满足该语句的 WHERE
子句中条件的具有行。那种由语句再次回到的完整行集称为结果集。应用程序,尤其是交互式联机应用程序,并不总能将一切结果集作为一个单元来有效地拍卖。这几个应用程序必要一种机制以便每一次处理一行或一部分行。游标正是提供那种机制的对结果集的一种扩展。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website