欢迎来到天天文库
浏览记录
ID:5656159
大小:141.00 KB
页数:35页
时间:2017-11-16
《数据库原理课件--08_游标及存储过程补充》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章游标和存储过程8.1游标概念8.2使用游标8.3游标示例8.4存储过程概念8.5创建和执行存储过程8.6存储过程小结8.1游标概念关系数据库中的操作会对整个行集产生影响。由SELECT语句返回的行集包括所有满足该语句WHERE子句中条件的行。由语句所返回的这一完整的行集被称为结果集。应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理。这些应用程序需要一种机制以便每次处理一行或一部分行。游标就是提供这种机制的结果集扩展。8.1游标概念游标通过以下方式扩展结果处理:允许定位在结果集的特定行。从结果集的当前位置检索一行或多行。支持对结果集中当前位置的行
2、进行数据修改。为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持。提供在脚本、存储过程和触发器中使用的访问结果集中的数据的Transact-SQL语句。返回8.2使用游标是否声明游标打开游标提取数据处理完成?关闭游标释放资源图游标的典型使用过程1.声明游标DECLAREcursor_nameCURSOR[FORWARD_ONLY
3、SCROLL][STATIC
4、KEYSET
5、DYNAMIC
6、FAST_FORWARD][READ_ONLY
7、SCROLL_LOCKS]FORselect_statement[FORUPDATE[OFcolumn_name[,...n
8、]]]SCROLL指定所有的提取选项(FIRST、LAST、PRIOR、NEXT、RELATIVE、ABSOLUTE)均可用。如果在SQL-92DECLARECURSOR中未指定SCROLL,则NEXT是唯一支持的提取选项。如果指定SCROLL,则不能也指定FAST_FORWARD。2.打开游标OPEN{cursor_name
9、cursor_variable_name}打开Transact-SQL服务器游标,然后通过执行在DECLARECURSOR或SETcursor_variable语句中指定的Transact-SQL语句填充游标。3.提取游标FETCH[[NEXT
10、PRIOR
11、
12、FIRST
13、LAST
14、ABSOLUTE{n
15、@nvar}
16、RELATIVE{n
17、@nvar}]FROM]{cursor_name
18、@cursor_variable_name}[INTO@variable_name[,...n]]从Transact-SQL服务器游标中检索特定的一行NEXT返回紧跟当前行之后的结果行,并且当前行递增为结果行。如果FETCHNEXT为对游标的第一次提取操作,则返回结果集中的第一行。NEXT为默认的游标提取选项。PRIOR返回紧临当前行前面的结果行,并且当前行递减为结果行。如果FETCHPRIOR为对游标的第一次提取操作,则没有行返回并且游标置于第一行之前
19、。FIRST返回游标中的第一行并将其作为当前行。LAST返回游标中的最后一行并将其作为当前行。参数介绍(1)ABSOLUTE{n
20、@nvar}如果n或@nvar为正数,返回从游标头开始的第n行并将返回的行变成新的当前行。如果n或@nvar为负数,返回游标尾之前的第n行并将返回的行变成新的当前行。如果n或@nvar为0,则没有行返回。n必须为整型常量且@nvar必须为smallint、tinyint或int。RELATIVE{n
21、@nvar}如果n或@nvar为正数,返回当前行之后的第n行并将返回的行变成新的当前行。如果n或@nvar为负数,返回当前行之前的第n行并将返回的行变成新的
22、当前行。如果n或@nvar为0,返回当前行。如果对游标的第一次提取操作时将FETCHRELATIVE的n或@nvar指定为负数或0,则没有行返回。n必须为整型常量且@nvar必须为smallint、tinyint或int。参数介绍(2)@@FETCH_STATUS可以使用@@FETCH_STATUS全局变量判断数据提取的状态。@@FETCH_STATUS返回FETCH语句执行后的游标最终状态。返回值含义0FETCH语句成功。-1FETCH语句失败或此行不在结果集中。-2被提取的行不存在。4.关闭游标CLOSE{cursor_name
23、cursor_variable_name}在使用
24、CLOSE语句关闭某游标后,系统并没有完全释放游标的资源,并且也没有改变游标的定义,当再次使用OPEN语句时可以重新打开此游标。5.释放游标释放分配给游标的所有资源。DEALLOCATE{cursor_name
25、cursor_variable_name}释放游标就释放了与该游标有关的一切资源,包括游标的声明,以后就不能再使用OPEN语句打开此游标了。返回8.3游标示例示例1.pubs数据库的authors表,声明一个处理姓以字母“B”开头的作者的游标。DECLAREa
此文档下载收益归作者所有