游标 存储过程_第1页
游标 存储过程_第2页
游标 存储过程_第3页
游标 存储过程_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、游标 存储过程游标存储过程2011-02-28 18:21最终编辑樊储09.08。26 7、游标宿主语言一般只能在单记录方式下工作,即一次处理一个记录。而sql语句的查询结果常常是一张表,它包含多个记录,为此需要用游标(cursor)作为桥梁做一些特殊处理。与游标有关的命令共有五条:declare、cursor、open、fetch、close、deallocate。定义游标:declare cursor,具体格式:declare游标名insensitivescrollcursor for select-查询块forread only|updateof列名列名insensitive:说明用数据

2、的临时拷贝来定义游标,所有对游标的请求都反映在这个临时表上,此游标不准修改;scroll:说明可以用所有的方法来存储数据,允许修改和删除;for read only/for update说明游标是只读的还是可以修改的;该语句用select-查询块定义一个游标文件,它的内容是select-查询块的查询结果(多个记录组成的临时表)。打开游标:open游标名该语句指执行select-查询块中的查询,并使游标指针指向查询结果的第一条记录。从游标中读记录:fetchnext|prior|first|last|absolute n|relative nfrom游标名into:主变量1,:主变量next:说

3、明如果是在open后第一次执行fetch命令,则返回结果集的第一行,否则使游标的指针指向结果集的下一行;next是默认的选项,也是最常用的一种方法;prior|first|last|absolute n|relative n:只有在定义游标时使用了scrool选项才可以使用;prior是返回结果集当前行的前一行;first返回结果集的第一行;last返回结果集的最后一行;absolute n是返回结果集的第n行,如果n是负数,则返回倒数第n行;relative n是返回当前行后的第n行,如果n是负数,则返回从当前行倒数第n行。这里的语句是取出游标的当前记录并送入主变量,同时使游标指针旨向下一条

4、记录。关闭游标:close游标名释放游标:deallocate游标名该命令的功能是删除由declare声明的游标。利用游标进行修改或删除只影响表的当前行。存储过程、触发器和数据完整性1、存储过程:传统的数据库中只存放数据,而现在的c/s结构数据库中还可以存放程序,因为这种程序以数据库对象的形式存储在数据库中,所以称为存储过程。存储过程是经过预编译的sql语句的集合,速度较快。sql server本身提供了一些存储过程,用于管理sql server和显示有关数据库和用户的信息,称之为系统存储过程。创建存储过程:create procedureprocedure_name;numberparame

5、ter data_type=default,.as sql_statement其中参数:procedure_name:存储过程名;number:对同名的存储过程指定一个序号;parameter:给出参数名;=default:默认的参数值;sql_statement:可以是单个或多个sql语句。存储过程语句中不可以出现创建数据库对象的语句。执行存储过程的语句:execute存储过程名无论什么时候执行存储过程,总要返回一个结果码,用以指示存储过程的执行状态。如果存储过程执行成功,返回的结果码是0;如果存储过程执行失败,返回的结果码一般是一个负数,它和失败的类型有关。在创建存储过程时,也可以定义自己

6、的状态码和错误信息。存储过程的修改和删除:存储过程作为独立的数据库对象存储在数据库中,存储过程可以修改,不需要的存储过程也可以删除。修改:alter procedureprocedure_name;numberparameter data_type=default,.as sql_statement修改的过程相当于先删除旧存储过程,再建立一个新存储过程。删除:drop procedureprocedure_name删除存储过程的语句中不能指定序号,因为该语句会删除同名的所有存储过程。2、触发器触发器是一类特殊的存储过程,它在满足某个条件下会自动触发执行。这可以提高数据库服务器的性能,同时触发器

7、以可以用于实现复杂的数据完整性约束。触发器是定义在表或视图上的,当在表上发生某种操作时,会引发触发器执行。影响表中的数据的操作有三种,即更新、插入、删除,对应的触发器也就是三个。sql server上允许为每类操作定义多个触发器,当发生相应的操作时,依次触发相应的触发器。建立触发器:create trigger trigger_name on table forinsert|update|deleteasif update(column)and|or|update(column).sql_statement table:说明了定义触发器的表或视图;forinsert|update|delete:说明了激活触发器的操作;if update(column):对应于update类触发器,说明如果更新某列则做如何处理;sql_statement:触发器所要执行的sql语句,它可以是一组sql语句,可以包含流程控制语句等。插入视图和删除视图:在定义了触发器的表上发生修改操作时,会自动派生出两个视图或临时表,一个是插入视图ins

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论