第存储过程和触发器.pptx
《第存储过程和触发器.pptx》由会员分享,可在线阅读,更多相关《第存储过程和触发器.pptx(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1第第 存储存储(cn ch)过程和触发器过程和触发器第一页,共81页。本章本章(bn zhn)难点难点n n有参存储过程(guchng)的创建、执行n n触发器的触发时机n nDELETED与INSERTED表第1页/共81页第二页,共81页。第第10章章 存储存储(cn ch)过程和触发器过程和触发器存储(cn ch)过程的概念1建立和执行存储(cn ch)过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5触发器的管理与维护6DDL触发器7事务8第2页/共81页第三页,共81页。10.1 10.1 存储存储存储存储(cn ch(cn ch)过程的概念过程的概念过程的概
2、念过程的概念在数据库的实际应用在数据库的实际应用(yngyng)中,常需要重复执行中,常需要重复执行一些程序段。为了方便用户,也为了提高执行效率,一些程序段。为了方便用户,也为了提高执行效率,SQLServer2005中的用户自定义函数、存储过中的用户自定义函数、存储过程、触发器可以用来满足这些应用程、触发器可以用来满足这些应用(yngyng)需求。需求。第3页/共81页第四页,共81页。10.1 10.1 存储过程存储过程存储过程存储过程(guchng)(guchng)的概念的概念的概念的概念举例举例(jl):USE XSSELECT 学号,姓名(xngmng),系名,总学分FROM XSD
3、AWHERE 系名=信息ORDER BY 总学分 DESC1.将将T-SQL语句发送到服务器语句发送到服务器2.服务器编译服务器编译T-SQL语句语句3.优化产生查询执行计划优化产生查询执行计划4.数据库引擎执行查询计划数据库引擎执行查询计划5.执行结果返回客户端执行结果返回客户端第4页/共81页第五页,共81页。10.1 10.1 存储存储存储存储(cn ch(cn ch)过程的概念过程的概念过程的概念过程的概念第5页/共81页第六页,共81页。10.1 10.1 存储过程存储过程存储过程存储过程(guchng)(guchng)的概念的概念的概念的概念EXEC xxEXEC xxEXEC x
4、xEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xx第6页/共81页第七页,共81页。10.1 10.1 存储过程存储过程存储过程存储过程(guchng)(guchng)的概念的概念的概念的概念第7页/共81页第八页,共81页。10.1 10.1 存储存储存储存储(cn ch(cn ch)过程的概念过程的概念过程的概念过程的概念n n存储过程的优点n n执行(zhxng)效率高n n统一的操作流程n n重复使用n n安全性第8页/共81页第九页,共81页。10.1 10.1 存储过程存储过程存储过程存储过
5、程(guchng)(guchng)的概念的概念的概念的概念n n存储过程的分类n n系统存储过程n n 存储在master数据库中以sp_为前缀n n用户自定义存储过程n n 用户存储过程是用户根据需要,在自己的普通数据库中创建,是 用 来 完 成 某 项 特 定(tdng)任务的存储过程。第9页/共81页第十页,共81页。10.1 存储存储(cn ch)过程的概念过程的概念n n存储过程与视图比较n n可以(ky)在单一的存储过程中执行一系列T-SQL语句,而视图只能是SELECT。n n存储过程可以(ky)接受参数,并能返回单个或多个结果集以及返回值,视图不能接受参数,只能返回结果集。n
6、n一般将经常用到的多个表的链接查询定义为视图,而存储过程完成复杂的一系列的处理,在存储过程中也会经常使用到视图。第10页/共81页第十一页,共81页。第第10章章 存储存储(cn ch)过程和触发器过程和触发器存储(cn ch)过程的概念1建立和执行存储(cn ch)过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5触发器的管理与维护6DDL触发器7事务8第11页/共81页第十二页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程1、创建存储过程、创建存储过程创建存储过程时,需要注意下列事项:创建
7、存储过程时,需要注意下列事项:(1)只能在当前数据库中创建存储过程。)只能在当前数据库中创建存储过程。(2)数据库的所有者可以创建存储过程,也可以授权其他用户创建存储过程。)数据库的所有者可以创建存储过程,也可以授权其他用户创建存储过程。(3)存储过程是数据库对象,其名称必须遵守标识符命名规则。)存储过程是数据库对象,其名称必须遵守标识符命名规则。(4)不能将)不能将CREATEPROCEDURE语句与其它语句与其它SQL语句组合到单个批处理中。语句组合到单个批处理中。(5)创建存储过程时,应指定)创建存储过程时,应指定(zhdng)所有输入参数和调用过程或批处理返回的输出参数、执行数据库操作
8、的编程语句和返回至调用过程或批处理以表明成功或失败的状态值。所有输入参数和调用过程或批处理返回的输出参数、执行数据库操作的编程语句和返回至调用过程或批处理以表明成功或失败的状态值。第12页/共81页第十三页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程(1)语法(yf)格式:CREATE PROC EDURE 存储存储(cn ch)过程名过程名 输入参数输入参数 数据类型数据类型 =defaultOUTPUT,n AS sql_statement .n 第13页/共81页第十四页,共81页。10.2 10.2
9、建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程第14页/共81页第十五页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程例例10.110.1从从xsglxsgl数据库的三个表中查询,返回学生学号、姓名、课程名、数据库的三个表中查询,返回学生学号、姓名、课程名、成绩成绩(chngj)(chngj)。该存储过程实际上只返回一个查询信息。该存储过程实际上只返回一个查询信息。USE xsglGOCREATE PROCEDURE stu_cjASSELECT xs.学号学号
10、,姓名姓名(xngmng),课程名课程名,成绩成绩 FROM xs INNER JOIN cj ON xs.学号学号=cj.学号学号 INNER JOIN kcON cj.课程号课程号=kc.课程号课程号GO第15页/共81页第十六页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程2、执行存储(cn ch)过程EXEC 存储(cn ch)过程名 参数值,n第16页/共81页第十七页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程第1
11、7页/共81页第十八页,共81页。第18页/共81页第十九页,共81页。第19页/共81页第二十页,共81页。第20页/共81页第二十一页,共81页。第21页/共81页第二十二页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程例例10.310.3从从xsglxsgl数据库的三个表中查询数据库的三个表中查询(chxn)(chxn)某人指定课程的成绩。某人指定课程的成绩。CREATE PROCEDURE stu_cj1 name char(10),cname char(16)ASSELECT xs.学号学号,姓名姓名(
12、xngmng),课程名课程名,成绩成绩 FROM xs INNER JOIN cj ON xs.学号学号=cj.学号学号INNER JOIN kcON cj.课程号课程号=kc.课程号课程号 WHERE xs.姓名姓名(xngmng)=name AND kc.课程课程=cnameGO第22页/共81页第二十三页,共81页。第23页/共81页第二十四页,共81页。第24页/共81页第二十五页,共81页。第25页/共81页第二十六页,共81页。第26页/共81页第二十七页,共81页。第27页/共81页第二十八页,共81页。第28页/共81页第二十九页,共81页。第29页/共81页第三十页,共81页
13、。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程练习:在xs数据库中,创建一个存储(cn ch)过程jsjzf_p,用于查询信息系学生的总学分的排名情况(从高分到低分)。USE XS GO CREATE PROC jsjzf_p AS SELECT 学号学号,姓名姓名(xngmng),系名系名,总学分总学分 FROM xsda WHERE 系名系名=信息信息 ORDER BY 总学分总学分 DESC第30页/共81页第三十一页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch
14、(cn ch)过程过程过程过程练习:练习:使用使用(sh(sh yng)yng)输入参数,创建查询存储过程输入参数,创建查询存储过程xzf_pxzf_p,用于,用于查询指定某系学生总学分的排名情况(由高到低)。查询指定某系学生总学分的排名情况(由高到低)。USE XS GO CREATE PROC xzf_p xiname char(10)AS SELECT 学号学号,姓名姓名(xngmng),系名系名,总学分总学分 FROM xsda WHERE 系名系名=xiname ORDER BY 总学分总学分 DESC第31页/共81页第三十二页,共81页。10.2 10.2 建立和执行建立和执行建
15、立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程练练习习:使使用用输输入入参参数数,创创建建存存储储过过程程grkccj_pgrkccj_p,查查询询(chxn)(chxn)某人指定课程的成绩和学分。某人指定课程的成绩和学分。USE XS GO CREATE PROC grkccj_p name char(8),kcname char(20)AS SELECT xsda.学号学号,姓名姓名,课程名称课程名称,成绩成绩(chngj),总学分总学分 FROM xsda,xscj,kcxx WHERE xsda.学号学号=xscj.学号学号 AND xscj.课程编号课
16、程编号=kcxx.课程编号课程编号 AND 姓名姓名=name AND 课程名称课程名称=kcname第32页/共81页第三十三页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程例例:参数传递技巧参数传递技巧 在在执执行行存存储储过过程程时时,若若未未指指明明参参数数名名称称,则则必必须须依依照照存存储储过过程程所所需需的的参参数数依依次次(yc)(yc)传传过过去去,而而且且除除非非该该参参数数指指定定有有默认值,否则不可省略。默认值,否则不可省略。CREATE PROCEDURE testa int,b in
17、t=NULL,c int=3ASSELECT a,b,cGOEXEC testEXEC test 1EXEC test 1,DEFAULTEXEC test 1,DEFAULT,5EXEC test 1,2,3第33页/共81页第三十四页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程例例:创创建建(chungjin)(chungjin)一一个个存存储储过过程程xscj_pxscj_p,查查询询指指定定学学生生的的学学号号,姓姓名名,所所选选课课程程名名称称及及该该课课程程的的成成绩绩,默默认认为为查查询刘姓学
18、生的学习情况。询刘姓学生的学习情况。CREATE PROCEDURE xscj_pname varchar(30)=刘刘%AS SELECT xsda.学号学号,姓名姓名(xngmng),课程名称课程名称,成绩成绩FROM xsda,xscj,kcxxWHERE xsda.学号学号=xscj.学号学号AND xscj.课程编号课程编号=kcxx.课程编号课程编号AND 姓名姓名(xngmng)LIKE nameGO 第34页/共81页第三十五页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程例:执行存储(cn c
19、h)过程xscj_pEXEC xscj_pEXEC xscj_p 李李%EXEC xscj_p 王红王红EXEC xscj_p%第35页/共81页第三十六页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程例例10.510.5:创建:创建(chungjin)(chungjin)一个存储过程用于计算指定学生各科成绩一个存储过程用于计算指定学生各科成绩的总分,存储过程中使用了一个输入参数和一个输出参数。的总分,存储过程中使用了一个输入参数和一个输出参数。CREATE PROCEDURE stu_sum name char
20、(10),total int OUTPUTASSELECT total=SUM(成绩成绩(chngj)FROM xs,cjWHERE 姓名姓名=name AND xs.学号学号=cj.学号学号 GROUP BY xs.学号学号GO第36页/共81页第三十七页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程例10.5中存储(cn ch)过程的执行方法为:USE xsglDECLARE total intEXECUTE stu_sum 程明程明,total OUTPUTSELECT 程明程明,totalGO第37页
21、/共81页第三十八页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程练习:创建一个存储过程(guchng)kcavg_p,用于查询所有学生所学指定课程的平均成绩,并将该平均成绩返回。CREATE PROC kcavg_p kcname char(20),kcavg decimal(3,1)output AS SELECT kcavg=avg(成绩成绩)FROM xscj,kcxx WHERE xscj.课程课程(kchng)编号编号=kcxx.课程课程(kchng)编号编号 and 课程课程(kchng)名称名称
22、=kcname第38页/共81页第三十九页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程练习:执行存储过程kcavg_p,查询(chxn)计算机文化基础课程的平均分。declare avg decimal(3,1)exec kcavg_p 计算机文化基础计算机文化基础,avg outputSELECT avg as 计算机文化基础的平均计算机文化基础的平均(pngjn)成成绩绩第39页/共81页第四十页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储
23、过程和执行存储过程课堂练习:1.在Sales数据库中,创建存储过程proc_Employees,查询所有的员工信息。2.创建一个带有输入参数的存储过程proc_goods,查询指定员工所进商品(shngpn)信息。3.创建一个带有输入和输出参数的存储过程proc_GNO,查询指定厂商指定名称的商品(shngpn)所对应的商品(shngpn)编号。第40页/共81页第四十一页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程1.在Sales数据库中,创建存储过程proc_Employees,查询(chxn)所有的员工信
24、息。USE SalesGOCREATE PROC proc_EmployeesASSELECT*FROM Employees-执行执行(zhxng)存储过程存储过程EXEC proc_Employees第41页/共81页第四十二页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程2.2.创建一个带有输入参数的存储过程创建一个带有输入参数的存储过程proc_goodsproc_goods,查询,查询(chxn)(chxn)指定员工所进商品信息。指定员工所进商品信息。USE SalesGOCREATE PROC pr
25、oc_goods 员工编号员工编号 char(6)=1001AS SELECT 商品编号商品编号,商品名称商品名称,生产生产(shngchn)厂商厂商,进货价进货价,零售零售价价,数量数量,进货时间进货时间 FROM Goods WHERE 进货员工编号进货员工编号=员工编号员工编号-执行存储过程,查询执行存储过程,查询1001号员工所进的商品的信息号员工所进的商品的信息EXEC proc_goods 员工编号员工编号=default-或或EXEC proc_goods 员工编号员工编号=1001第42页/共81页第四十三页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 过程 触发器
限制150内