欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据库实验九-存储过程和触发器班.docx

    • 资源ID:848807       资源大小:163.18KB        全文页数:10页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库实验九-存储过程和触发器班.docx

    实验09存储过程和触发器K仪器设备每位学生一台PC机(标准配制,IG内存),装有SQLSerVer2005或者其他DBMSK目的要求1 .了解几个常用的系统存储过程。2 .掌握如何使用T-SQL语句创立、执行和重编译存储过程。3 .了解如何使用企业管理器管理存储过程。4 .掌握如何使用T-SQL语句创立触发器。5 .了解如何使用企业管理器创立触发器。6 .掌握AFTER触发器的用法,并了解INSTEADOF触发器的用法。K实验内容1 .创立存储过程。(D创立一个存储过程,查看“2”号课程的选修情况,包括选修该课程的学号、姓名和成绩。usexskcgocreateproceduressc3asselect学生.学号,姓名,年级学期成绩学号LWhere学期成绩.课程编号="002,from学生join学期成绩on学生.学号goJj消息命令已成功完成。(2)执行存储过程(1)上面所建立的存储过程只能对“2”号课程的选修情况进行查看,要想对所有课程进行随机查看,需要进行参数的传递。usexsJccgo createproceduressc_4Qcnumberchar(5)asselect学生.学号,姓名,年级from笑生3oxn学期成绩on学生.学号=学期成绩.学号LWhere学期成绩.课程编号=cnunbergoI消息口令已成功完成。(2)按位置传递参数executessc4'J003,结果.J消息学号姓名年级123100110071008王晓明NULL刘晨null王敏NULL(3)通过参数名传递参数11executessc4-W*WS*A1.CnUInber='J003'口结果L消息三号姓名年级11001J王晓明NULL21007刘晨NULL31008王NULL(1)执行存储过程ssc4时;如果没有给出参数,系统会报错。如果希望不给参数时,能查询所有课程的进修情况,那么可以使用默认参数值来实现。usexskcg。createproceduressc_5Qcnuniberchar(5)=null3ifQcnuniberisnullbeginSeles学生.学号,姓名,年级from学生joxn学期成绩on学生.学号=学期成绩.学号endelsebeginSeIeS学生.学号,姓名,年级from笔生join学期成绩on学生.学号=学期成绩.学号-where学期成绩.课程编号=0cnumberendgo4.使用输出参数。(1)创立一个存储过程SSC6,获得选修某门课程的总人数。USeXSkcgo createproceduressc_6cnunberchar(5)Accountintoutputas selectAccount=count(*)from笑期成绩1.where学期成绩.课程编号="numbergo(2)执行存储过程ssc6odeclareccountintexecutessc6,J002*zccountoutputselect,结果是:,AccountIH结果.J消息优列名)一优列名)!绪藁豆"I25.使用返PI值。(1)创立一个返回执行状态码的存储过程ssc_7,它接受课程号为输入参数,如果执行成功,返PlO;如果没有给出课程号,返回错误码1;如果给出的课程号不存在,返回错误码2;如果出现其他错误,返回错误码3。usexskcgo2 createproceduressc_7cnumberchar(5)=nullasifcnumberisnullbeginPrinC,错误:你必须输入课程号。,return(1)endelsebeginiffselectCOSCL)from学期成绩where课程编号=2C二LmI:sr.=0beginPrim,错误:你给出的课程号不存在。,return(2)卜endFendselectcnurcberas课程编号from学期成绩where课程编号=Qcnumber3 if0error<>O-beginreturn(3)卜endelse1.return(0)gu(2)执行存储过程ssc_7opeclareQresultintIexecresult三ss71.select,其结果是:,resultt川一口结果3消息阮列名)田列名)1三SS:516.修改存储过程-使用对象资源管理器修改存储过程。口可编程性Q口存储过程田 国田 田田王LJ函数sLj系统存储过程新建存储过程(N).修改(Y)执行存储过程(E).编写存储过程脚本7.查看存储过程。execsp_helpVlf一结果上消息NameOwnerObjectJypessc_3dbostoredprocedureSSC_4dbostoredprocedureSSC_5dbostoredproceduressc_6dbostoredprocedureSSCJdbostoredprocedure8 .删除存储过程。HrOPproceduressc_3消息命令已成功完成。9 .创立触发器。(1)在表student中建立删除触发器,实现表student和表SC中数据的级联删除。psexskcgocreateCriggerSdeIeCeon学生afterdeleteasdeletefrom学期成绩-where学号in(select学号fromdeleted)在对象资源管理器中,向表COUrSe中插入一列StatUS(Char(D),并且默认值为“0”。在表SC上建立一个InSert触发器,当向表SC中插入一行时,检查课程表中的课程是否正在准备中(查看对应课程在COUrSe中的状态是否为1),如果是在准备中,那么不能进行选修。statusnchar(l)列属性)1(常双)(名称)status长度1默认值或绑定CO')usexskcgocreatetriggerscinserto11学期成绩afterinsertasif(selectscacusfromi果不呈注册,insertedWhere课程注册.课程编号=Inserced.课程编号)=,1beginPrint,该课程正在准备中,Print,该次选课操作失败,rollbacktransaction-end(3)运行以上创立触发器的代码,然后再向表course中插入以下记录。useXSkCinsertinto课程注册(课程编号,课程名称,或笈忌短)VaIUeS(,J009,J体系结构,31,)二消息 L课程编号)use XSkcinsert into学期成绩(学号, values (,1013 - J009')J消息该课程正在准备中该次选课操作失败消息3609,级别16,状态力第2行事务在触发器中结束。批处理已中止。<1行受影响)-,JIJ*-»WkkWJOO9体系结构NULLNULLNULL1(4)向SC表参加“9”号课程的选修记录,查看执行情况。将“9”号课程的状态必为“0"。向表SC参加“9”号课程的选修记录,查看执行情况。EJusexskcinsertinto学期成绩(学号,课程编号)Lvalues(1013',J009,)LEupdate课程注册Isetstatus三,0,1.where谟程编号='J009'J消息<1行受影响)(6)表SC的cno列设置了外键约束,试用触发器实现这一功能。useXSkCg。createtriggerSSinSerton学期成绩afterInsertasif(selectcount(*)from课程注册,insertedwhere课程注册.课程编号=inserced.课程编号)=CbeginPrinC,该课程不存在,该次选课失败,rollbacktransactionend(7)在上例中,只针对插入单行数据,不包括对多行的判断,如果要利用触发器对插入的数据进行逐行检查,并将那些课程号在表C。UrSe中不存在的行删掉,请修改以上触发器。usexskcgoDcreatetriggerSXinSerton学期成绩afterinsertasif(selectcount(*)from课程注册,insertedwhere课程注册.课程编号=inserced.课程编号)<>©©roWCOUnCbegindelete学期成绩from学期成绩,insertedwhere学期成绩.课程编*in3产ced.课程编号andinserced.课程编号notir.(select课程编号from课程注册)-end10 .使触发器无效或重新有效。(1)使表SC上的Scinsert触发器无效。3LuseXSkcaltertable学期成绩disabletriggerscinserd(2)使表SC上的Scinsert触发器重新有效。3LuseXSkcaltertable学期成绩enabletriggerscinserd11 .删除Scinsert触发器。3usexskc1.droPtriggerscinsertK问题解答1.创立存储过程之前应考虑什么?创立存储过程之前应考虑以下4点: CREATEPROCEDURE语句不能与别的SQL语句位于同一个批中; 创立存储过程的权限默认属于数据库拥有者,该权限可以授予他人; 存储过程是数据库对象,它的命名应符合标识符的命名标准; 只能在当前数据库中创立存储过程。2.什么是INSERTED表和DELETED表?SQLSerVer为每个触发器都创立了两个专用表:INSERTED表和DELETED表。这是两个逻辑表,由系统来维护,用户不能对它们进行修改。它们存放在内存而不是数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行完成后,与该触发器相关的这两个表也被删除。DELETED表存放由于执行DELETE或UPDATE语句而要从表中删除的所有行。在执行DELETE或UPDATE操作时,被删除的行从激活触发器的表中被移动到DELETED表,这两个表不会有共同的行。INSERTED表存放由于执行INSERT或UPDATE语句而要向表中插入的所有行。在执行INSERT或UPDATE操作时,新的行同时添加到激活触发器的表和INSERTED表中,INSERTED表的内容是激活触发器的表中新行的备份。K思考、练习题1.使用对象资源管理器创立存储过程ssc.3o(Jxskc图6数据库关系图囹d表田口视图田同义词S口可编程也(+)口W¾fffllS(R

    注意事项

    本文(数据库实验九-存储过程和触发器班.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开