存储过程与触发器.pptx
《存储过程与触发器.pptx》由会员分享,可在线阅读,更多相关《存储过程与触发器.pptx(96页珍藏版)》请在咨信网上搜索。
1、本章内容本章内容10.1 存储过程存储过程概述概述10.2 存储过程的创建与使用存储过程的创建与使用10.3 触发器触发器概述概述10.4 触发器的创建与使用触发器的创建与使用10.5 事务处理事务处理10.6 SQL Server的的锁机制锁机制10.1 存储过程概述存储过程概述 n存储过程存储过程是是SQL Server服务器上一组预编服务器上一组预编译的译的Transact-SQL语句,用于完成某项任语句,用于完成某项任务,它可以接受参数、返回状态值和参数务,它可以接受参数、返回状态值和参数值,并且可以嵌套调用。值,并且可以嵌套调用。10.1 10.1 存储过程概述存储过程概述nSQL
2、Server存储过程的类型包括:存储过程的类型包括:系统存储过程系统存储过程用户定义存储过程用户定义存储过程临时存储过程临时存储过程扩展存储过程。扩展存储过程。1.存储过程的类型存储过程的类型10.1 10.1 存储过程概述存储过程概述(1)系统存储过程系统存储过程 n是指由系统提供的存储过程,主要存储在是指由系统提供的存储过程,主要存储在master数据库中并数据库中并以以sp_为前缀为前缀,它从系统,它从系统表中获取信息,从而为系统管理员管理表中获取信息,从而为系统管理员管理SQL Server提供支持。提供支持。如:如:sp_helptext、sp_rename。10.1 10.1 存储
3、过程概述存储过程概述(2)用户定义存储过程用户定义存储过程n是由用户创建并能完成某一特定功能(例是由用户创建并能完成某一特定功能(例如查询用户所需数据信息)的存储过程。如查询用户所需数据信息)的存储过程。注意:注意:存储过程名前不能有前缀存储过程名前不能有前缀sp_。10.1 10.1 存储过程概述存储过程概述(3)临时存储过程临时存储过程n临时存储过程与临时表类似,存储过程名临时存储过程与临时表类似,存储过程名称前面添加称前面添加“#”。当。当SQL Server关闭后,关闭后,这些临时存储过程将自动被删除。这些临时存储过程将自动被删除。10.1 10.1 存储过程概述存储过程概述(4)扩展
4、存储过程扩展存储过程n扩展存储过程是扩展存储过程是SQL Server可以动态装载可以动态装载和执行的动态链接库和执行的动态链接库(DLL)。当扩展存储过。当扩展存储过程加载到程加载到SQL Server中,它的使用方法与中,它的使用方法与系统存储过程一样。扩展存储过程只能添系统存储过程一样。扩展存储过程只能添加到加到master数据库中,其前缀是数据库中,其前缀是xp_。10.1 10.1 存储过程概述存储过程概述2.存储过程具有以下优点存储过程具有以下优点(5)保证操作一致性保证操作一致性。(1)模块化编程模块化编程。(2)快速执行。快速执行。(3)减少网络通信量减少网络通信量。(4)提供
5、安全机制。提供安全机制。10.2.1 创建创建存储过程存储过程10.2.2 执行执行存储过程存储过程10.2.3 修改修改存储过程存储过程10.2.4 删除删除存储过程存储过程10.2.5 存储存储过程参数过程参数与状态值与状态值10.2 存储过程的创建与使用存储过程的创建与使用在在SQL Server 中建立存储过程的两种方法:中建立存储过程的两种方法:一是一是使用企业管理器;使用企业管理器;二是二是使用使用Create Procedure语句。语句。10.2.1 创建存储过程创建存储过程1.使用企业管理器创建存储过程使用企业管理器创建存储过程例:例:建立存储过程建立存储过程stu_pro,
6、查询所有女生的基本信息。,查询所有女生的基本信息。语法格式:语法格式:CREATE PROCEDURECREATE PROCEDURE 存储存储过程名过程名 WITHWITH ENCRYPTION ENCRYPTION ASAS sql_statement,.n sql_statement,.n2.使用使用CREATE PROCEDURE语句创建存储过程语句创建存储过程其中:其中:WITH ENCRYPTIONWITH ENCRYPTION:对定义存储过程的的语句文本进行加密。:对定义存储过程的的语句文本进行加密。sql_statementssql_statements:存储过程中实现功能的存
7、储过程中实现功能的SQLSQL语句。语句。语法格式:语法格式:EXEC 存储过程名称存储过程名称 10.2.2 执行存储过程执行存储过程【例例】创建一存储过程创建一存储过程xs_proxs_pro,要求该存储过程返回学生,要求该存储过程返回学生姓名、所学课程名称和成绩的信息。姓名、所学课程名称和成绩的信息。CREATE PROCEDURECREATE PROCEDURE xs_pro xs_proASAS SELECT SELECT 姓名姓名,课名课名,成绩成绩 FROM FROM 学生学生 xs xs INNER JOININNER JOIN 选课选课 xk xk ONON xs.xs.学号
8、学号 =xk.=xk.学号学号 INNER JOININNER JOIN 课程课程 kc kc ONON xk.xk.课号课号 =kc.=kc.课号课号如要执行该存储过程,可在查询分析器中执行如下语句:如要执行该存储过程,可在查询分析器中执行如下语句:EXECEXEC xs_proxs_pro【练习练习】创建存储过程创建存储过程cj_proccj_proc,查询每科的课号、最高分、,查询每科的课号、最高分、最低分、平均分信息。最低分、平均分信息。创建存储过程创建存储过程rs_procrs_proc,统计每科及格的人数。,统计每科及格的人数。create procedure cj_proc as
9、 select 课号课号,max(成绩成绩)最高分最高分,min(成绩成绩)最低分最低分 from 选课表选课表 group by 课号课号create procedure rs_procas select 课号课号,count(*)人数人数 from 选课表选课表 where 成绩成绩=60 group by 课号课号1.用用T-SQL语句查看存储过程语句查看存储过程 查看存储过程的定义查看存储过程的定义 sp_helptext 存储过程名存储过程名查看存储过程查看存储过程 查看有关存储过程的信息查看有关存储过程的信息 sp_help 存储过程名存储过程名2.使用企业管理器查看存储过程使用企
10、业管理器查看存储过程 展开服务器组,然后展开服务器。展开服务器组,然后展开服务器。展开展开“数据库数据库”文件夹,展开存储过程所属的数据库,文件夹,展开存储过程所属的数据库,然后单击然后单击“存储过程存储过程”文件夹。文件夹。在详细信息窗格中,在详细信息窗格中,右击需要查看的存储过程右击需要查看的存储过程,然后单,然后单击击“属性属性”命令。也可以直接双击存储过程也可。命令。也可以直接双击存储过程也可。该存储过程的定义代码显示在该存储过程的定义代码显示在“存储过程属性存储过程属性”窗口的窗口的文本框中。文本框中。创建和执行存储过程创建和执行存储过程proc_grade,proc_grade,查
11、询选课表中选修查询选课表中选修2 2号号课学生的学号、成绩信息,并使存储过程不能使用课学生的学号、成绩信息,并使存储过程不能使用sp_helptextsp_helptext查看。查看。CREATE PROCCREATE PROC proc_grade proc_grade WITH WITH encryption encryption AS AS SELECT SELECT 学号学号,成绩成绩 FROMFROM 选课表选课表 WHEREWHERE 课号课号=2=2GOGOsp_helptextsp_helptext proc_grade proc_grade【练习练习】10.2 10.2 存储
12、过程的创建与使用存储过程的创建与使用10.2.3 修改存储过程修改存储过程1.使用企业管理器修改存储过程使用企业管理器修改存储过程例:例:修改存储过程修改存储过程stu_pro,查询,查询“软件软件”专业学生的姓专业学生的姓名。名。10.2.3 10.2.3 修改存储过程修改存储过程2.使用使用ALTER PROCEDURE语句修改存储过程语句修改存储过程ALTERALTER PROCEDUREPROCEDURE 存储过程名存储过程名 WITH ENCRYPTIONWITH ENCRYPTION AS AS sql_statement .n sql_statement .n 创建存储过程创建存
13、储过程proc_sjk,proc_sjk,获取选修获取选修“程序设计程序设计”课的课的所有学生的姓名,成绩信息。所有学生的姓名,成绩信息。修改存储修改存储过程过程proc_sjk,使其能够显示出选修该课的,使其能够显示出选修该课的女生的姓名、成绩信息,并对其加密。女生的姓名、成绩信息,并对其加密。【练习练习】create procedure pro_sjkas select 姓名姓名,成绩成绩 from 学生表学生表 xs inner join 选课表选课表 xk on xs.学号学号=xk.学号学号 inner join 课程表课程表 kc on xk.课号课号=kc.课号课号 where
14、课名课名=程序设计程序设计alter procedure pro_sjkwith encryptionas select 姓名姓名,成绩成绩 from 学生表学生表 xs inner join 选课表选课表 xk on xs.学号学号=xk.学号学号 inner join 课程表课程表 kc on xk.课号课号=kc.课号课号 where 课名课名=程序设计程序设计 and 性别性别=女女10.2 10.2 存储过程的创建与使用存储过程的创建与使用10.2.4 删除存储过程删除存储过程 1.使用企业管理器删除存储过程使用企业管理器删除存储过程例:例:删除存储过程删除存储过程stu_pro。1
15、0.2.4 10.2.4 删除存储过程删除存储过程2.使用使用DROP PROCEDURE删除存储过程删除存储过程n语法如下:语法如下:DROP PROCEDURE 存储过程名存储过程名,.n 10.2 10.2 存储过程的创建与使用存储过程的创建与使用10.2.5 存储过程参数与状态值存储过程参数与状态值1.参数参数n存储过程的参数在创建过程时声明。存储过程的参数在创建过程时声明。nSQL Server支持两类参数:支持两类参数:输入参数输入参数和和输出参数输出参数。10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状态值(1)输入参数输入参数CREATE PROCEDURECR
16、EATE PROCEDURE 存储过程名存储过程名 参数名参数名1 1 数据类型数据类型 长度长度,小数位小数位,WITHWITH ENCRYPTIONENCRYPTION ASAS sql_statement,.n sql_statement,.n10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状态值例例10-310-3 创建带参数的存储过程,从表创建带参数的存储过程,从表employeeemployee、sell_ordersell_order、goodsgoods、goods_classificationgoods_classification的连接中返回输入的员工名、该的
17、连接中返回输入的员工名、该员工销售的商品名、商品类别、销售量等信息。员工销售的商品名、商品类别、销售量等信息。CREATE PROCCREATE PROC sell_info sell_info employee_name varchar(20)employee_name varchar(20)ASAS SELECTSELECT employee_name,goods_name,employee_name,goods_name,classification_name,order_num classification_name,order_num FROM FROM employee e emp
18、loyee e INNER JOININNER JOIN sell_order s sell_order s ONON e.employee_id=s.employee_id e.employee_id=s.employee_id INNER INNER JOINJOIN goods g goods g ONON g.goods_id=s.goods_id g.goods_id=s.goods_id INNERINNER JOINJOIN goods_classification gc goods_classification gc ONON gc.classification_id=g.cl
19、assification_id gc.classification_id=g.classification_id WHERE WHERE employee_name employee_name LIKE LIKE employee_nameemployee_name10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状态值n执行时,可以省略参数名,直接给参数值。在执行时,可以省略参数名,直接给参数值。在SQL查询分查询分析器中输入命令:析器中输入命令:EXEC sell_info 东方牧东方牧n运行结果如图。运行结果如图。n参数值可以包含通配符参数值可以包含通配符“%”,例如,查找所
20、有姓,例如,查找所有姓“钱钱”的员工的销售情况可以使用以下命令:的员工的销售情况可以使用以下命令:EXEC sell_info 钱钱%10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状态值执行时,参数可以由位置标识,也可以由名字标识。执行时,参数可以由位置标识,也可以由名字标识。n例如,定义一个具有例如,定义一个具有3个参数的存储过程:个参数的存储过程:CREATE PROC myproc val1 int,val2 int,val3 intAS.n参数以位置传递:参数以位置传递:EXEC myproc 10,20,15n参数以名字传递,每个值由对应的参数名引导:参数以名字传递,
21、每个值由对应的参数名引导:EXEC myproc val2=20,val1=10,val3=15n按名字传递参数比按位置传递参数具有更大的灵活性。但按名字传递参数比按位置传递参数具有更大的灵活性。但是,按位置传递参数却具有更快的速度。是,按位置传递参数却具有更快的速度。【例例】建立一个存储过程,根据所给学生的姓名查询该学建立一个存储过程,根据所给学生的姓名查询该学生的信息。生的信息。CREATE PROC xs_proc xm varchar(8)AS SELECT *from 学生表学生表 WHERE 姓名姓名=xmGOEXEC xs_proc 李明李明创建带参数的存储过程创建带参数的存储过
22、程proc_list,根据输入的课号,查询选,根据输入的课号,查询选课表中该科成绩排名前课表中该科成绩排名前3位的学生的学号和成绩信息。位的学生的学号和成绩信息。执行该存储过程,查询课号为执行该存储过程,查询课号为 1的成绩排名前的成绩排名前3位学生。位学生。CREATE PROCEDURE proc_listkcbh char(1)AS SELECT TOP 3 学号学号,成绩成绩 FROM 选课表选课表 WHERE 课程编号课程编号=kcbh ORDER BY 分数分数 DESCGOEXEC proc_list 1【练习练习】10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状
23、态值(2)输出参数输出参数CREATE PROCEDURECREATE PROCEDURE 存储过程名存储过程名 参数名参数名1 1 数据类型数据类型 长度长度,小数位小数位,输出参数输出参数1 1 数据类型数据类型 长度长度,小数位小数位 OUTPUTOUTPUT,WITHWITH ENCRYPTIONENCRYPTION ASAS sql_statement,.n sql_statement,.n10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状态值例例10-4 创建存储过程创建存储过程price_goods,通过输入,通过输入参数在参数在goods表中查找商品,以输出参数获
24、取表中查找商品,以输出参数获取商品单价。商品单价。CREATE PROC price_goods goods_name varchar(80),price_goods real OUTPUT AS SELECT price_goods=unit_price FROM goods WHERE goods_name=goods_name10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状态值n执行执行price_goods存储过程的代码如下:存储过程的代码如下:DECLARE price realEXEC price_goods Canon LBP2900,price OUTPUTSE
25、LECT pricen运行结果是商品名为运行结果是商品名为Canon LBP2900的商品的商品单价:单价:1380.0EXEC语句还需要关键字语句还需要关键字OUTPUT以允许参数值以允许参数值返回给变量。返回给变量。【例例】创建一个实现两个整数加法运算并将运算结果作为输出创建一个实现两个整数加法运算并将运算结果作为输出参数的存储过程参数的存储过程spadd。CREATE PROCEDURE spAddValue1 INT,Value2 INT,ResultValue INT OUTPUTASSELECT ResultValue=Value1+Value2GODECLARE result i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 过程 触发器
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。