存储过程和触发器 讲稿.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《存储过程和触发器 讲稿.ppt》由会员分享,可在线阅读,更多相关《存储过程和触发器 讲稿.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、存储过程和触发器 第一页,讲稿共四十八页哦10.1存储过程10.1.1 存储过程概述 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。一般用来处理需要与数据库进行频繁交互的复杂的业务。因为存储过程具有以下优点:存储过程在服务器端运行,执行速度快。封装业务逻辑也可以使数据库操作人员与应用系统开发人员的分工更明确,支持模块化设计。2022-9-72第二页,讲稿共四十八页哦存储过程执行一次后,其执行计划就驻留在高速缓冲存储器,如果需要再次调用,只需要从高速缓冲存储器中调用,提高系统性能。存储过程可以作为安全机制。通过授予用户对存储过程的操作
2、权限来实现安全机制。使体现企业规则的运算程序放入数据库服务器中,以便集中控制。2022-9-73第三页,讲稿共四十八页哦10.1.2 存储过程的分类 1系统存储过程 系统存储过程存储在master数据库中,以sp_开头,可以在其他数据库中进行调用。如:sp_help就是取得指定对象的相关信息。2扩展存储过程 在SQL Server环境之外执行动态链接库称为扩展存储过程,以XP_开头,用来调用操作系统提供的功能。3用户自定义的存储过程 由用户创建并能完成某一特定功能的存储过程。包括Transact-SQL和CLR两种类型。(1)Transact-SQL存储过程是指保存的Transact-SQL语
3、句集合,可以接受和返回用户提供参数。也可以从数据库向客户端应用程序返回数据。(2)CLR在本书不做详细介绍。2022-9-74第四页,讲稿共四十八页哦10.1.3 建立存储过程 1.使用对象资源管理器建立存储过程 2.使用T-SQL命令建立存储过程 语法形式如下:CREATE PROCEDURE procedure_name parameter data_typeVARYING=defaultOUTPUT ,.n WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION FOR REPLICATIONASsql_statement .n 2022-9-75第
4、五页,讲稿共四十八页哦【例题10.1】创建一个不带参数的存储过程,名称为pro_stu,用于检索学生的姓名、性别和家庭住址。USE scoreGO-判断pro_stu存储过程是否存在,若存在,则删除If exists(select name from sysobjects where name=pro_stu and type=p)DROP PROCEDURE pro_stuGo-建立存储过程CREATE PROC pro_stuAs SELECT student_name,sex,addressFROM student2022-9-76第六页,讲稿共四十八页哦【例题10.2】创建一个带参数的
5、存储过程,名称为pro_class,在执行存储过程的时候输入班级编号,然后检索该班级的学生的详细信息。USE scoreGO-判断pro_class存储过程是否存在,若存在,则删除If exists(select name from sysobjects where name=pro_class and type=p)DROP PROCEDURE pro_classGo-建立存储过程CREATE PROC pro_class c_no char(8)As SELECT *FROM studentWHERE class_id=c_no2022-9-77第七页,讲稿共四十八页哦10.1.4 存储过
6、程的执行 语法形式如下:EXECUTE return_status=procedure_name|procedure_name_var parameter=value|variableOUTPUT|DEFAULT ,.n WITH RECOMPILE 2022-9-78第八页,讲稿共四十八页哦1.无参存储过程的执行 【例题10.3】执行在例题10.1中创建的存储过程pro_stu。EXEC pro_stu在执行带参存储过程的时候参数有以下几种传递方式:2.带参存储过程的执行(1)顺序法 2022-9-79第九页,讲稿共四十八页哦CREATE PROC pro_update s_id char(
7、10),c_id char(5),result int -参数ASUPDATE scoreSET grade=resultWHERE student_id=s_id AND course_id=c_id/*顺序法执行存储过程,把0801101号学生1001号课程的成绩修改为85分*/EXEC pro_update 0801101,1001,85【例题10.4】建立一个存储过程pro_update,通过指定学号和课程编号来把成绩表中的成绩修改为指定的某个值,然后执行该存储过程。2022-9-710第十页,讲稿共四十八页哦EXEC pro_update s_id=0801101,result=85
8、,c_id=1001说明:提示法中的参数顺序可以与建立存储过程时的参数顺序不一致,而顺序法必须保持一致。(2)提示法 【例题10.5】通过提示法来执行存储过程pro_update。2022-9-711第十一页,讲稿共四十八页哦 建立存储过程时,可以指定参数的默认值,默认值必须为常量或者为NULL。(3)使用默认参数 【例题10.6】建立一个存储过程pro_insert,用来完成向课程表中插入记录的功能,然后执行该存储过程并检查执行结果。CREATE PROC pro_insert c_id char(5),c_name char(20),period int=64,c_type char(10
9、)=NULLAS INSERT courseVALUES(c_id,c_name,period,c_type )GO-执行存储过程pro_insertEXEC pro_insert 1006,c+程序设计GO-查看插入结果SELECT*FROM course2022-9-712第十二页,讲稿共四十八页哦 在建立存储过程时,通过定义输出参数,可以从存储过程中返回一个或多个值。在执行存储过程时,可以将结果返回给返回参数。定义输出参数需要在参数定义的数据类型后使用关键字OUTPUT,或省写为OUT。(4)使用带OUTPUT的返回参数 【例题10.7】建立一个带参数的存储过程,用于求两个整数的和,其中
10、和定义为OUTPUT参数,然后执行存储过程并输出和。CREATE PROC pro_sum a int,b int,sum int outputASSET sum=a+bGO-执行存储过程DECLARE s intEXEC pro_sum 20,15,s outputPRINT s2022-9-713第十三页,讲稿共四十八页哦10.1.5 存储过程的返回值 存储过程被执行以后可以返回一个整数类型的代码值,该值用来记录存储过程的执行情况。若返回值为0,表示执行成功;否则表示执行不成功。1)用一个变量来捕捉存储过程执行后返回值。2)使用RETURN语句为存储过程指定一个确定的返回值,以用来反映存储
11、过程执行的结果情况。捕捉存储过程返回值的方法 2022-9-714第十四页,讲稿共四十八页哦【例题10.9】用变量来捕捉存储过程执行后返回值。建立一个存储过程,完成查询指定学生指定科目的成绩。然后执行该存储过程并捕捉执行是否成功。CREATE PROC pro_grade s_id char(10),c_id char(5)ASSELECT gradeFROM scoreWHERE student_id=s_id AND course_id=c_idGODECLARE status int -声明变量,用来存放执行结果的状态EXEC status=pro_grade 0801101,1001S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储过程和触发器 讲稿 存储 过程 触发器
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内