存储过程PPT讲稿.ppt
《存储过程PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《存储过程PPT讲稿.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、存储过程存储过程第1页,共65页,编辑于2022年,星期六第第1010章章 存储过程存储过程第2页,共65页,编辑于2022年,星期六 存储过程是一种高效、安全的访问数据库存储过程是一种高效、安全的访问数据库的方法。主要被用于提高数据库中检索数据的的方法。主要被用于提高数据库中检索数据的速度,也经常被用来访问数据或管理被修改的速度,也经常被用来访问数据或管理被修改的数据。本章介绍如何创建存储过程、管理存储数据。本章介绍如何创建存储过程、管理存储过程。过程。第3页,共65页,编辑于2022年,星期六第第10章章 存储过程存储过程n教学目标:存储过程是由一系列的T-SQL语句组成的子程序,用来满足
2、更高的应用需求,存储过程可以通过存储过程的名字被直接调用,它们可以说是SQL Server程序设计的灵魂,掌握和使用好它们对数据库的开发与应用非常重要。n教学提示:通过本章的学习,要求掌握存储过程的概念、用途、创建、修改等管理和操作,能编写简单的存储过程。第4页,共65页,编辑于2022年,星期六存储过程是什么?功能 分类 结构 优点存储过程与视图的区别?第5页,共65页,编辑于2022年,星期六10.1 存储过程概述存储过程概述10.1.1 存储过程的概念存储过程的概念存储过程是在数据库服务器执行的一组存储过程是在数据库服务器执行的一组T-SQL语句的集语句的集合,经编译后存放在数据库服务器
3、端。存储过程作为一个单合,经编译后存放在数据库服务器端。存储过程作为一个单元进行处理并以一个名称来标识。它能够向用户返回数据,元进行处理并以一个名称来标识。它能够向用户返回数据,向数据库中写入或修改数据,还可以执行系统函数和管理操向数据库中写入或修改数据,还可以执行系统函数和管理操作,用户在编程中只需要给出存储过程的名称和必需的参数,作,用户在编程中只需要给出存储过程的名称和必需的参数,就可以方便地调用它们。就可以方便地调用它们。存储过程与其他编程语言中的过程存储过程与其他编程语言中的过程有些类似。有些类似。存储过程也是一种数据库对象。存储过程也是一种数据库对象。第6页,共65页,编辑于202
4、2年,星期六10.1.1 存储过程的概念存储过程的概念存储过程分类:存储过程分类:n n系统存储过程系统存储过程(SP_开头,学习使用开头,学习使用)n n用户自定义存储过程用户自定义存储过程(主要学习主要学习)n n扩展存储过程扩展存储过程(XP_开头开头)n n临时存储过程临时存储过程(#或或#开头开头)n n远程存储过程远程存储过程 第7页,共65页,编辑于2022年,星期六1系统存储过程系统存储过程 系统存储过程(System Stored Procedures)主要存储在master数据库中,并以sp_为前缀,并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQL Se
5、rver 提供支持。2本地存储过程本地存储过程 本地存储过程(Local Stored Procedures)也就是用户自行创建并存储在用户数据库中的存储过程。事实上一般所说的存储过程指的就是本地存储过程。因为当用户存储过程与系统存储过程重名时,调用系统存储过程,故用户不要用sp_为前缀命名。(系统提供的,如:系统提供的,如:sp_help)(即:将学习的自定义存储过程即:将学习的自定义存储过程)第8页,共65页,编辑于2022年,星期六3扩展存储过程扩展存储过程 扩展存储过程(Extended Stored Procedures)是用户可以使用外部程序语言(例如(例如 C C)编写的存储过程
6、。显而易见,通过扩展存储过程可以弥补SQL Server编程的不足之处,并按需要自行大幅扩展其功能。扩展存储过程在使用和执行上与一般的存储过程完全相同。可以将参数传递给扩展存储过程,扩展存储过程也能够返回结果和状态值。为了区别,扩展存储过程的名称通常以xp_开头。扩展存储过程是以动态链接库(DLL)的形式存在,能让SQL Server 动态装载和执行。扩展存储过程一定要存放在系统数据库 master 中。第9页,共65页,编辑于2022年,星期六4临时存储过程临时存储过程(1)本地临时存储过程 不论哪一个数据库是当前数据库,如果在创建存储过程时,以井字号(#)作为其名称的第一个字符,则该存储过
7、程将成为一个存放在tempdb中的本地临时存储过程(例如:CREATE PROCEDURE#book_proc)。(2)全局临时存储过程 不论哪一个数据库是当前数据库,只要所创建的存储过程名称是以两个井字号(#)开始,则该存储过程将成为一个放在tempdb中的全局临时存储过程(例如:CREATE PROCEDURE#book_proc)。注意:不论创建的是本地临时存储过程还是全局临时存储过程,只要SQL Server 一停止运行,它们将不复存在。第10页,共65页,编辑于2022年,星期六5远程存储过程远程存储过程 在SQL Server中,远程存储过程(Remote Stored Proce
8、dures)位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。第11页,共65页,编辑于2022年,星期六10.1.2 存储过程的优点存储过程的优点 P151-132n执行速度快:执行速度快:通过本地存储、通过本地存储、代码预编译代码预编译和缓和缓存技术实现高性能的数据操作存技术实现高性能的数据操作n模块化编程:模块化编程:增强代码的重用性和共享性增强代码的重用性和共享性n减少网络通信量:减少网络通信量:通过通用编程结构和过程实通过通用编程结构和过程实现编程框架化现编程框架化n存储过程可以作为安全性机制:存储过程可以作为安全性机制:通过隔离和加通过隔离
9、和加密的方法提高了数据库的安全性密的方法提高了数据库的安全性第12页,共65页,编辑于2022年,星期六10.2 创建存储过程创建存储过程要使用存储过程,首先要创建一个存储过程,要使用存储过程,首先要创建一个存储过程,下面介绍存储过程的创建和执行。下面介绍存储过程的创建和执行。10.2.1 创建存储过程创建存储过程1.使用使用SQL Server Management Studio创建存储过程创建存储过程2.T-SQL的的CREATE PROCEDURE语句来语句来创建存储过程。创建存储过程。第13页,共65页,编辑于2022年,星期六10.2.1 创建存储过程创建存储过程【例【例10-1】使
10、用】使用SQL Server Management Studio创建存储过程创建存储过程ProAvgPrice,用于输出所有图书的平均价格。,用于输出所有图书的平均价格。解:其操作步骤如下:解:其操作步骤如下:1)启动启动SSMS。2)在在“对象资源管理器对象资源管理器”中展开当前服务器节点。中展开当前服务器节点。3)“数据库数据库”“Library”“可编程性可编程性”“存储过程存储过程”节点,节点,右击,在弹出的快捷菜单中选择右击,在弹出的快捷菜单中选择“新建存储过程新建存储过程”命令,如图命令,如图10-1所示。所示。4)在右侧的在右侧的“查询编辑器查询编辑器”中出现存储过程模板,可以参
11、照模板中出现存储过程模板,可以参照模板在其中输入存储过程的在其中输入存储过程的T-SQL语句。单击工具栏中的按钮,出现语句。单击工具栏中的按钮,出现“指定指定模板参数的值模板参数的值”对话框,如图对话框,如图10-2所示。在其中设置模板中相关参所示。在其中设置模板中相关参数的值。数的值。第14页,共65页,编辑于2022年,星期六10.2.1 创建存储过程创建存储过程 图图10-1 选择选择“新建存储过程新建存储过程”命令命令 图图10-2 存储过程模板与存储过程模板与“指定模板参数的值指定模板参数的值”对话框对话框 图图10-3 在模板中创建存储过程在模板中创建存储过程ProAvgPrice
12、 图图10-4 显示存储过程显示存储过程ProAvgPrice 第15页,共65页,编辑于2022年,星期六10.2.1 创建存储过程创建存储过程 本例创建的存储过程本例创建的存储过程Pro_AvgPrice不需要输入参数、输出参数,不需要输入参数、输出参数,在模板中将其删除。在模板中将其删除。相应相应SQL语句为:语句为:SELECT AVG(Price)AS 平均价格平均价格 FROM Book单击工具栏中的按钮,出现单击工具栏中的按钮,出现“指定模板参数的值指定模板参数的值”对话框,输入对话框,输入存储过程名为存储过程名为Pro_AvgPrice,如图,如图10-3所示。单击所示。单击“
13、确定确定”按钮,在按钮,在“指定模板参数的值指定模板参数的值”对话框中设置的参数值写入模板中。对话框中设置的参数值写入模板中。(5)单击工具栏中的按钮,将其保存在数据库中。此时选中)单击工具栏中的按钮,将其保存在数据库中。此时选中“存储过程存储过程”节点,右击,在弹出的快捷菜单中选择节点,右击,在弹出的快捷菜单中选择“刷新刷新”命令,命令,会看到会看到Pro_AvgPrice存储过程,如图存储过程,如图10-4所示。所示。第16页,共65页,编辑于2022年,星期六1.创建存储过程的简单格式创建存储过程的简单格式(无参数无参数)GOCREATE PROCEDURE procedure_name
14、WITH ENCRYPTIONWITH RECOMPILEAS Sql_statementGOCREATE PROCEDURE第17页,共65页,编辑于2022年,星期六10.2.1 创建存储过程创建存储过程【例【例10-2】创建一个简单的存储过程】创建一个简单的存储过程ProSeBook,查询所有,查询所有图书的信息。图书的信息。解:解:use LibraryGO CREATE PROCEDURE Pro_SeBook AS SELECT *FROM BookGO思考:思考:1.设计返回蒋瑞珍的姓名成绩信息的存储过程?设计返回蒋瑞珍的姓名成绩信息的存储过程?2.改成任意某个姓名呢?改成任意某
15、个姓名呢?第18页,共65页,编辑于2022年,星期六执行存储过程执行存储过程 在存储过程创建成功后,用户可以执行存储过程来检查存储过程的返回结果。执行存储过程的基本语法如下:EXEC procedure_name注意:注意:如执行存储过程的代码是批的第一条,可以省略EXEC。【例【例10-6】USE Library EXEC Pro_SeBook-或:USE Library GOPro_SeBook第19页,共65页,编辑于2022年,星期六练习一练习一 使用图书管理信息库1.设计查某位读者的已借数量的存储过程p_borrow_sum。2.设计查某位读者的全部借书记录。p_borrow。3.
16、执行存储过程,检查执行结果。无参数的存储过程:无参数的存储过程:第20页,共65页,编辑于2022年,星期六CREATE PROCEDURE2带输入参数的存储过程带输入参数的存储过程(输入参数)(输入参数)为了定义接受输入参数的存储过程,需要在为了定义接受输入参数的存储过程,需要在CREATE PROCEDURE语句中声明一个或多个变量作为参数。语句中声明一个或多个变量作为参数。GOCREATE PROCEDURE procedure_nameparameter_name datatype=defaultwith encryptionwith recompileAS Sql语句块语句块GO第2
17、1页,共65页,编辑于2022年,星期六【例【例10-3】创建一个带有输入参数的存储过程】创建一个带有输入参数的存储过程Pro_IdBook,查询指,查询指定读者编号的读者的借书记录。其中输入参数用于接收读者编号值,定读者编号的读者的借书记录。其中输入参数用于接收读者编号值,设有默认值设有默认值“G001”。解:解:CREATE PROCEDURE Pro_IdBook UserId char(6)=G001AS SELECT *FROM Lending WHERE UserId=UserId go提示:提示:如果没有参数输入时,默认查询学号为如果没有参数输入时,默认查询学号为G001的读者的
18、读者借书记录。借书记录。第22页,共65页,编辑于2022年,星期六执行含有输入参数的存储过程执行含有输入参数的存储过程1)使用参数名传递参数值使用参数名传递参数值其语法格式如下:其语法格式如下:EXEC procedure_name parameter_name=value ,n【例【例10-7】EXECUTE ProIdBook UserId=T001GO第23页,共65页,编辑于2022年,星期六执行含有输入参数的存储过程执行含有输入参数的存储过程2)按位置传递参数值按位置传递参数值EXEC procedure_name value1,value2,.【例【例10-7】改为:】改为:EX
19、EC Pro_IdBook T001 GOEXEC Pro_IdBook S003GO第24页,共65页,编辑于2022年,星期六-【例】【例】使用输入参数,显示某人使用输入参数,显示某人成绩成绩情况存储过程情况存储过程USE 教学成绩管理数据库教学成绩管理数据库GOCREATE PROCEDURE Pro_s_sc1name varchar(8)ASSELECT S.学号学号,姓名姓名,成绩成绩FROM 学生信息表学生信息表 S,成绩表成绩表 SCWHERE S.学号学号=SC.学号学号 AND 姓名姓名=nameGO第25页,共65页,编辑于2022年,星期六-调用存储调用存储过程过程EX
20、EC Pro_s_sc1 蒋瑞珍蒋瑞珍-用用SET设置变量设置变量,调用调用存储存储过程过程DECLARE temp1 VARCHAR(8)SET temp1=蒋瑞珍蒋瑞珍 EXEC Pro_s_sc1 temp1-用用SELECT设置变量设置变量,调用调用存储存储过程过程DECLARE temp1 VARCHAR(8)SELECT temp1=蒋瑞珍蒋瑞珍 EXEC Pro_s_sc1 temp1第26页,共65页,编辑于2022年,星期六练习一:练习一:使用使用教学成绩管理数据库教学成绩管理数据库1.使用多输入参数使用多输入参数,显示某人显示某人某门课的成绩某门课的成绩情况存储过情况存储过
21、程程。2.调用该存储过程,查看结果。调用该存储过程,查看结果。练习二:练习二:使用使用Library库库book2表表1.创建存储过程创建存储过程pro_book_price,显示某出版社,显示某出版社,图书定价在某个区间的图书信息。图书定价在某个区间的图书信息。2.调用该存储过程,查看结果。调用该存储过程,查看结果。有输入参数的存储过程:有输入参数的存储过程:第27页,共65页,编辑于2022年,星期六练习三:练习三:(此例题显示存储过程可以完成复杂的查询此例题显示存储过程可以完成复杂的查询)查找与查找与李明李明同学选修课程完全相同的学生的学号和姓名同学选修课程完全相同的学生的学号和姓名(不
22、能多选也不能少选)(不能多选也不能少选)有输入参数的存储过程:有输入参数的存储过程:第28页,共65页,编辑于2022年,星期六3.创建带参数的存储过程创建带参数的存储过程(输入输出参数输入输出参数)GOCREATE PROCEDURE pro_过程名称过程名称输入参数变量 变量类型 ,输入参数变量 变量类型 OUTPUT,AS 实现某功能的实现某功能的T-SQL命令的集合命令的集合GOCREATE PROCEDURE第29页,共65页,编辑于2022年,星期六【例【例10-4】创建一个带有输入参数和输出参数的】创建一个带有输入参数和输出参数的存储过程存储过程Proc_BookCate,返回指
23、定读者所借,返回指定读者所借图书的图书类别。图书的图书类别。解:解:CREATE PROCEDURE Proc_BookCate 读者编号读者编号 char(6),类别类别 nvarchar(20)OUTPUTASSELECT 类别类别=BookCate FROM BookCategory,Lending,Book WHERE BookCategory.BkCateId=Book.BkCateId AND Lending.BookId=Book.BookId AND UserId=读者编号读者编号第30页,共65页,编辑于2022年,星期六1.申请对应输出参数变量及类型2.将此变量取代Exec
24、命令中的对应位置,并加output选项3.Print 显示此变量值显示此变量值 调用带输出参数的过程:调用带输出参数的过程:第31页,共65页,编辑于2022年,星期六执行存储过程执行存储过程【例【例10-8】执行【例】执行【例10-4】创建的带输入和输出参数的存储】创建的带输入和输出参数的存储过程过程ProcBookCate,返回指定读者所借图书的图书类别。,返回指定读者所借图书的图书类别。USE LibraryGODECLARE 读者编号读者编号 char(6)DECLARE 类别类别 nvarchar(20)SET 读者编号读者编号=T002EXEC ProcBookCate 读者编号读
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 过程 PPT 讲稿
限制150内