预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
一、游标声明
游标必须先声明后才能使用,声明的主要内容如下:(1)游标名称(2)数据子集的来源(源表和指定列)(3)选取条件(WHERE表达式)(4)游标属性(只读或可操作)使用DECLARE…CURSOR命令声明游标,其语法格式有两种,符合SQL-92标准的语法格式一和SQLServer扩展的语法格式二。
1、语法格式一
DECLAREcursor_name[INSENSITIVE][SCROLL]CURSOR
FORselect_statement
[FOR{READONLY|UPDATE[OFcolumn_name[,…n]]}]
参数说明如下:cursor_name为游标名,与某个查询结果相关联,作为查询结果集的符号名。
【例10-1】从jsy表中选取“汽车指挥”专业的所有记录,声明一个只读、只进游标来标识该结果集。
DECLAREjsy_cur1
CURSOR
KEYSET
FOR
SELECT驾照号,姓名,出生年月,籍贯 FROMjsy WHERE所学专业=‘汽车指挥'
2、语法格式二
DECLAREcursor_name
CURSOR
[LOCAL|GLOBAL]
/*游标作用域*/
[FORWARD_ONLY|
SCROLL]/*游标移动方向*/
[STATIC|KEYSET|DYNAMIC
|FAST_FORWARD]
/*游标类型*/
[READ_ONLY|
SCROLL_LOCKS
OPTIMISIC] /*游标访问属性*/
FORselect_statement
/*条件查询语句*/
[FORUPDATE[OF
column_name[,…n]]]
/*可修改的列*/
cursor_name为游标名称,下面用cursor表示所定义的游标。LOCAL、GLOBAL关键字指定cursor的用域,其中LOCAL关键字指定cursor为局部游标,作用域为创建此cursor的存储过程、触发器或批处理文件,其他存储过程等无法使用它。GLOBAL关键字指定cursor为全局游标,适用于本次连接所有的
存储过程、触发器或批处理文件,只有在最后一个用户结束连接时才会被释放。若两者均未指定,则默认由数据库选项中的defaulttolocalcursor选项值而定。FORWARD_ONLY和SCROLL关键字指定cursor的移动方向。前者指定cursor为只进游标,只能用FETCHNEXT命令来读取cursor。后者指定cursor为滚动游标,可使用FIRST、LAST、PRIOR、NEXT、RELATIVE和ABSOLUTE提取选项来读取cursor。STATIC、KEYSET、DYNAMIC和FAST_FORWARD关键字指定cursor的操作类型,分别为静态游标、键集驱动游标、动态游标和快速只进游标。READ_ONLY、SCROLL_LOCKS和OPTIMISIC关键字指定cursor的访问属性,分别为只读游标、游标数据可更新和游标数据不可更新。定义游标时,要注意选项的应用规则,通常有以下规则:(1)当指定cursor操作类型,不指定移动属性时,默认为SCROLL游标。当指定cursor移动属性,不指定操作类型时,默认为DYNAMIC游标。(2)当同时不指定cursor操作
类型和移动方向时,默认为FAST_FORWARD。如果指定了FAST_FORWARD,则不能指定FORWARD_ONLY、SCROLL、SCROLL_LOCKS、OPTIMISTIC和FORUPDATE关键字。
【例10-2】声明一键集驱动游标,选取汽车指挥专业驾驶员的驾照号、姓名和积分列。
DECLAREjsy_cur2CURSOR
KEYSET
FOR
SELECT驾照号,姓名,积分
FROMjsy
WHERE所学专业=‘汽车指挥’
【例10-3】声明一快速只进游标,从jsy表中选取xc表中驾驶车牌号为‘AX1320’的所有驾驶员的驾照号、姓名和积分。
DECLAREjsy_cur3
CURSOR
FAST_FORWARD
FOR
SELECTa.驾照号,a.姓名,a.积分
FROMjsya,xc
WHEREa.驾照号=xc.主驾
ANDxc.车牌号=‘AX1320’
【例10-4】定义游标,然后打开游标,测试游标内数据行数。
DECLARExc_cur1CURSOR
LOCALSCROLL
SCROLL_LOCKS
FOR
SELECT车牌号,出车单号,调度号
FROMxc
OPENxc_cur1
SELECT‘游标内数据行数'=@@CURSOR_ROWS
执行结果为:游标内数据行数
【例10-5】定义游标,然后打开游标,测试游标内数据。
DECLARExc_cur2
CURSOR
KEYSET
FOR
SE