存储过程和触发器1

存储过程和触发器1

ID:39511192

大小:362.51 KB

页数:48页

时间:2019-07-04

存储过程和触发器1_第1页
存储过程和触发器1_第2页
存储过程和触发器1_第3页
存储过程和触发器1_第4页
存储过程和触发器1_第5页
资源描述:

《存储过程和触发器1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十章存储过程和触发器2021/9/16110.1存储过程10.1.1存储过程概述存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。一般用来处理需要与数据库进行频繁交互的复杂的业务。因为存储过程具有以下优点:①存储过程在服务器端运行,执行速度快。②封装业务逻辑也可以使数据库操作人员与应用系统开发人员的分工更明确,支持模块化设计。2021/9/162③存储过程执行一次后,其执行计划就驻留在高速缓冲存储器,如果需要再次调用,只需要从高速缓冲存储器中调用,提高系统性能。④存储过程可以作为安全机制。

2、通过授予用户对存储过程的操作权限来实现安全机制。⑤使体现企业规则的运算程序放入数据库服务器中,以便集中控制。2021/9/16310.1.2存储过程的分类1.系统存储过程系统存储过程存储在master数据库中,以sp_开头,可以在其他数据库中进行调用。如:sp_help就是取得指定对象的相关信息。2.扩展存储过程在SQLServer环境之外执行动态链接库称为扩展存储过程,以XP_开头,用来调用操作系统提供的功能。3.用户自定义的存储过程由用户创建并能完成某一特定功能的存储过程。包括Transact-SQL和CLR两种类型。(1)Transact

3、-SQL存储过程是指保存的Transact-SQL语句集合,可以接受和返回用户提供参数。也可以从数据库向客户端应用程序返回数据。(2)CLR在本书不做详细介绍。2021/9/16410.1.3建立存储过程1.使用对象资源管理器建立存储过程2.使用T-SQL命令建立存储过程语法形式如下:CREATEPROC[EDURE]procedure_name[{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH {RECOMPILE

4、ENCRYPTION

5、RECOMPILE,ENCRYP

6、TION}][FORREPLICATION]ASsql_statement[...n]2021/9/165【例题10.1】创建一个不带参数的存储过程,名称为pro_stu,用于检索学生的姓名、性别和家庭住址。USEscoreGO--判断pro_stu存储过程是否存在,若存在,则删除Ifexists(selectnamefromsysobjectswherename='pro_stu'andtype='p')DROPPROCEDUREpro_stuGo--建立存储过程CREATEPROCpro_stuAsSELECTstudent_name,se

7、x,addressFROMstudent2021/9/166【例题10.2】创建一个带参数的存储过程,名称为pro_class,在执行存储过程的时候输入班级编号,然后检索该班级的学生的详细信息。USEscoreGO--判断pro_class存储过程是否存在,若存在,则删除Ifexists(selectnamefromsysobjectswherename='pro_class'andtype='p')DROPPROCEDUREpro_classGo--建立存储过程CREATEPROCpro_class@c_nochar(8)AsSELECT*F

8、ROMstudentWHEREclass_id=@c_no2021/9/16710.1.4存储过程的执行语法形式如下:[[EXEC[UTE]]{[@return_status=]{procedure_name

9、@procedure_name_var}[[@parameter=]{value

10、@variable[OUTPUT]

11、[DEFAULT]}[,...n][WITHRECOMPILE]2021/9/1681.无参存储过程的执行【例题10.3】执行在例题10.1中创建的存储过程pro_stu。EXECpro_stu在执行带参存储过程的时候参数

12、有以下几种传递方式:2.带参存储过程的执行(1)顺序法2021/9/169CREATEPROCpro_update@s_idchar(10),@c_idchar(5),@resultint--参数ASUPDATEscoreSETgrade=@resultWHEREstudent_id=@s_idANDcourse_id=@c_id/*顺序法执行存储过程,把0801101号学生1001号课程的成绩修改为85分*/EXECpro_update'0801101','1001',85【例题10.4】建立一个存储过程pro_update,通过指定学号和课

13、程编号来把成绩表中的成绩修改为指定的某个值,然后执行该存储过程。2021/9/1610EXECpro_update@s_id=’0801101’,@r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。