- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库系统13--SQL Server 编程课件
第 13 讲 SQL Server 编程 ;一、游标
1 游标概述; 当写一个应用程序时,基于数据集的操作
会有较好的灵活性.
例如,要将 pubs 数据库中的所有居住在
Menlo Park 的 authors 的 ZIP 代码改变为
94024,则可以用下面的更新语句来进行.
UPDATE authors
SET ZIP=‘94024’
WHERE city=‘Menlo Park’
要在数据集上进行各种不同的操作,可以
用两种方法:一是在数据集上进行多个操作;
二是首先得到整个数据集,然后基于它们的值
进行所需要的操作,即基于游标的操作.; 游标操作的最大好处就是可以在一个数据
集中,对某个独立于该集的其他数据行进行条
件操作,即你可以在单行数据上提交 SQL 命
令. 这种处理在复杂的应用程序中有如下好处:
● 提高性能:因为基于数据集的操作比基
于游标的操作需要更多的系统资源.
● 更好的事物控制能力:当处理数据时,
可以控制任何独立于其他行的给定行.
● 提高效率:在一个大的数据集上进行很
多操作时(如调用存储过程), 则数据库逐行
处理数据的效率高于在整个数据集上逐个操作
每个任务, 因为数据是保留在内存缓冲区中的. ; 游标提供了一种对从表中检索出的数据进
行操作的灵活手段,就其本质而言,游标实际
上就是一个指针,它能识别一个集合内的指定
工作行. 游标总是与一条 SQL 语句相关联的,
这是因为它是由结果集和结果集中指向特定记
录的游标位置所组成的. 如果要对一个结果集
进行处理,那么必须要首先声明一个指向该结
果集的游标.; 游标允许应用程序对查询语句 SELECT
返回的行结果中的每一行进行相同或不同的操
作,而不是一次对整个结果集进行同一种操作;
它还提供了针对游标位置而对表中的数据进行
删除和更新的能力;而且,它还把作为面向集
合的数据库管理系统和面向行的程序设计两者
联系起来,使两个数据处理方式得以沟通. ; 使用 SQL Server 游标通常有下面的 5
种状态.
● DECLARE:对于用于查询的游标,
SQL Server 首先要使它有效,即在共享的存
储器中创建一个游标定义的??构.
● OPEN:提取游标标识的.
● FETCH:从游标返回数据,这时可以
进行任何需要的操作.
● CLOSE:关闭先前打开的游标,释放
游标结果占据的锁.
● DEALLOCATE:释放 DECLARE 语
句所使用的共享存储器, 而不再允许其他过程
打开这个游标.; 如果要在应用程序中使用游标,需要进行
一下步骤.
(1)声明游标.
(2)打开游标,提取数据.
(3)在游标的当前行进行各种操作(插
入、更新、删除).
(4)关闭、释放游标.; ● 声明和打开游标
例: 声明一个只读游标从 pubs 数据库的
employee 表中读取数据.
DECLARE cur_employee_readonly
CURSOR
FOR SELECT emp_id, lname, job_id,
pub_id
FROM employee
ORDER BY emp_id
FOR READ ONLY ; 例: 声明一个游标从 pubs 数据库的
employee 表中提取数据.
DECLARE cur_employee_scroll
SCROLL CURSOR
FOR SELECT emp_id, lname, job_id,
pub_id
FROM employee
ORDER BY emp_id
有了 SCROLL 关键字, 就可以在应用中
对行位置进行定位. ; 例: 声明一个更新游标从 pubs 数据库的
employee 表中读取数据.
DECLARE cur_employee_update
SCROLL CURSOR
FO
文档评论(0)