预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

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