第11节存储过程触发器游标.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
存储过程、触发器、游标、事务、并发控制;存储过程、触发器、游标、事务; 存储过程的概念;; 建立和执行存储过程;【例】从S_C数据库的三个表中查询,返回学生学号、姓名、课程名、成绩。该存储过程实际上只返回一个查询信息。 CREATE PROCEDURE stu_cj AS SELECT student.sno,sname,cname,grade FROM student INNER JOIN sc ON student.sno=sc.sno INNER JOIN course ON sc.cno=course.cno exec stu_cj;; 带输入参数的存储过程 一个存储过程可以带一个或多个参数,输入参数是指由调用程序向存储过程传递的参数,它们在创建存储过程语句中被定义,在执行存储过程中给出相应的参数值。;【例10.3】从S_C数据库的三个表中查询某人指定课程的成绩。;2.调用存储过程 在执行存储过程的语句中,有两种方式传递参数值,分别是使用参数名传递参数值和按参数位置传递参数值。 按参数位置传递参数值: exec stu_cj1 王勇,数据库管理系统 参数名传递参数值: exec stu_cj1 @cname=数据库管理系统,@name=王勇;; 如果不确定是否已经存在stu_cj1,则可以在创建之前执行以下代码: IF EXISTS (SELECT name FROM SYSOBJECTS WHERE name=stu_cj1 AND type=P) DROP PROCEDURE stu_cj1 ;【例】从三个表的连接中返回指定学生的学号、姓名、所选课程名称及该课程的成绩。该存储过程在参数中使用了模式匹配,如果没有提供参数,则使用预设置的默认值。 CREATE PROCEDURE stu_cj2 @name char(10)=王% AS SELECT student.sno,sname,cname,grade FROM student INNER JOIN sc ON student.sno=sc.sno INNER JOIN course ON sc.cno=course.cno WHERE sname LIKE @name ;; 带输出参数的存储过程; DECLARE @total int EXECUTE stu_sum 王勇, @total OUTPUT SELECT 王勇,@total 注意:要定义变量来接收output类型变量传出来的参数值,存储过程参数名和调用时的变量名不一定相同,不过数据类型和参数的位置必须匹配。 ;存储过程的管理与维护; 存储过程的重编译;1.在创建存储过程时设定 在创建存储过程时,使用WITH RECOMPILE子句时SQL Server不将该存储过程的查询计划保存在缓存中,而是在每次运行时重新编译和优化,并创建新的执行计划。 2.在执行存储过程时设定 通过在执行存储过程时设定重新编译,可以让SQL Server在执行存储过程时重新编译该存储过程,这一次执行完成后,新的执行计划又被保存在缓存中。这样用户就可以根据需要进行重新编译。 EXECUTE stu_cj1 WITH RECOMPILE 3.通过系统存储过程设定重编译 通过系统存储过程sp_recompile设定重新编译标记,使存储过程在下次运行时重新编译。 其语法格式如下: EXECUTE sp_recompile 数据库对象; 修改和删除存储过程;; 触发器的概念;(3)修改其他数据表里的数据:当一个SQL语句对数据表进行操作的时候,触发器可以根据SQL语句的操作情况来对另一个数据表进行操作。 (4)调用更多的存储过程:约束是不能调用存储过程的,但触发器本身就是一种存储过程,而存储过程是可以嵌套调用的,所以触发器也可能调用一个或多个存储过程。 (5)返回自定义的错误信息:约束只能通过标准的系统错误信息来传递错误信息,如果应用程序要求使用自定义信息和较为复杂的错误处理,则必须使用触发器。 (6)防止数据表结构更改或数据表被删除:为了保护已经建立好的数据表,触发器可以在接收到以DROP或ALTER开头的语句后,不对数据表的结构做任何操作。;触发器的类型;; 创建和应用DML触发器;1.DELETE触发器 【例】当从student表中删除一个学生的记录时,相应的应从sc表中删除该学生对应的所有记录。CREATE TRIGGER delete_trig ON student AFTER DELETE AS DELETE FROM sc WHERE sno=(SELECT sno FROM DELETED);; DML触

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档