节游标和事务学习教案.pptx
上传人:王子****青蛙 上传时间:2024-09-12 格式:PPTX 页数:20 大小:137KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

节游标和事务学习教案.pptx

节游标和事务学习教案.pptx

预览

免费试读已结束,剩余 10 页请下载文档后查看

10 金币

下载此文档

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

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

会计学8.1.1游标的定义及优点1.游标的定义SELECT语句返回的所有行的集合均作为一个(yīɡè)整体处理,而无法对其中的一行或部分行做单独处理。而在实际开发中,尤其是在交互应用程序设计中,人们常常需要对SELECT语句所返回结果集合中的不同行做不同处理。游标正是这样一种方法,它能够部分读取返回结果集合中的数据行,并允许应用程序通过游标定位修改表中数据。2.游标的优点游标的主要好处是可以逐行的处理数据。通过游标允许程序对由select产生的结果集的每一行执行相同或不同的操作;允许从结果集中(jízhōng)检索指定的行;允许结果集中(jízhōng)的当前行被修改;允许被其它用户修改的数据在结果集中(jízhōng)是可见的。8.1.2游标的用法1.声明(shēngmíng)游标语法形式如下:DECLAREcursor_nameCURSORFORselect_statement[FOR{READONLY|UPDATE[OFcolumn_name[,...n]]}]cursor_name:是所定义的游标名称。cursor_name必须遵从标识符规则。select_statement:是定义游标结果集的标准SELECT语句。在游标声明的select_statement内不允许使用关键字COMPUTE、COMPUTEBY、FORBROWSE和INTO。FORREADONLY:指出游标的结果集是只读的,不能修改。FORUPDATE[OFcolumn_name[,...n]]:指出游标的结果集是可以(kěyǐ)被修改的。如果指定OFcolumn_name[,...n]参数,则只允许修改所列出的列。如果在UPDATE中未指定列的列表,则可以(kěyǐ)更新所有列。例8-1定义(dìngyì)一个游标,其数据为表salers中的全部数据DECLAREmyCursorCURSORForselect*fromSalers2.打开游标OPENcursor_namecursor_name是已声明过的并且没有打开的游标名称。打开游标后,可以从全局变量@@CURSOR_ROWS中读取游标结果集合中的行数。3.从打开的游标中提取数据(shùjù)FETCH[[NEXT|PRIOR|FIRST|LAST|ABSOLUTEn|RELATIVEn]FROM]cursor_name[INTO@variable_name[,...n]NEXT:提取上次提取行之后的行,即向下移动。如果FETCHNEXT为对游标的第一次提取操作,则返回结果集中的第一行。NEXT为默认的游标提取选项。PRIOR:提取上次提取行之前的行。如果FETCHPRIOR为对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。LAST:提取游标中的最后一行并将其作为(zuòwéi)当前行。ABSOLUTEn:如果n为正数,则提取游标中从第1行开始的第n行。如果n为负整数,则提取游标中的倒数第n行。RELATIVEn:如果n为正数,则提取所上次提取行之后的第n行。如果n为负数,则提取上次所提取行之前的第n行。如果n为0,则同一行被再次提取。cursor_name:要从中进行提取的游标的名称。INTO@variable_name[,...n]:允许将提取操作的列数据放到局部变量中。注意:FETCH语句每次只能提取一行数据。因为Transact-SQL游标不支持块(多行)提取操作(cāozuò)。FETCH语句的执行状态保存在全局变量@@FETCH_STATUS中,该变量有三种取值:当取值为0时,说明FETCH语句执行成功。当取值为-1时,说明FETCH语句失败或此行不在结果集中。当取值为-2时,说明被提取的行不存在。4.关闭游标当提取完游标结果集中的数据时,应及时调用CLOSE语句关闭游标,以便释放游标所占用的系统资源。CLOSEcursor_namecursor_name是要被关闭的游标名。5.释放(删除)游标由于关闭游标时并没有(méiyǒu)删除游标,因此,游标仍然占用着系统资源。则将其关闭后,还需要使用DEALLOCATE语句来释放游标所占用的系统资源。DEALLOCATEcursor_name8.1.3使用游标修改数据UPDATE语句和DELETE语句也支持游标操作,它们可以通过游标修改或删除游标基表中的当前(dāngqián)数据行。这样,就可以通过游标更新和删除数据表中的数据。UPDATEtable_nameSET子句(zǐjù)WHERECURRENTOFcursor_nametable_name:为需要修改的数据表名。cursor_name:为游标名。例如:UpdateSalers