存储过程与触发器ppt优秀课件.ppt
《存储过程与触发器ppt优秀课件.ppt》由会员分享,可在线阅读,更多相关《存储过程与触发器ppt优秀课件.ppt(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、存储过程与触发器存储过程与触发器ppt1第1页,本讲稿共103页本章要点本章要点n存储过程概述存储过程概述 n创建存储过程创建存储过程 n执行存储过程执行存储过程 n存储过程的参数存储过程的参数 n存储过程的返回值存储过程的返回值 n查看和修改存储过程查看和修改存储过程 n删除存储过程删除存储过程 n触发器概述触发器概述 ninserted和和deleted表表 n事务的概念及应用事务的概念及应用 n创建触发器创建触发器 n修改和重命名触发器修改和重命名触发器 n删除触发器删除触发器 2第2页,本讲稿共103页7.1 存储过程存储过程在创建在创建SQL Server数据库应用程序时,数据库应用
2、程序时,Transact-SQL语言语言是应用程序和是应用程序和SQL Server数据库之间的主要编程接口。可用数据库之间的主要编程接口。可用如下如下两种两种方法存储和执行方法存储和执行Transact-SQL语句。语句。(1)将将Transact-SQL程序保存在本地,创建向程序保存在本地,创建向SQL Server发送命令发送命令并处理结果的应用程序。并处理结果的应用程序。(2)可以将可以将Transact-SQL程序保存在程序保存在SQL Server中,即存储过中,即存储过程,在本地创建执行存储过程及处理结果的应用程序。程,在本地创建执行存储过程及处理结果的应用程序。任何一组任何一组
3、Transact-SQL语句构成的代码块,都可以作为存储语句构成的代码块,都可以作为存储过程保存起来。它在服务器端对数据库中的数据进行处理,并将过程保存起来。它在服务器端对数据库中的数据进行处理,并将结果返回到客户端。这样就避免了从客户端多次连接并访问数据结果返回到客户端。这样就避免了从客户端多次连接并访问数据库的操作,减少了网络上的传输量,同时也提高了客户端的工作库的操作,减少了网络上的传输量,同时也提高了客户端的工作效率(因为这些操作都是在服务器端完成的)。效率(因为这些操作都是在服务器端完成的)。3第3页,本讲稿共103页7.1.1 存储过程概述存储过程概述 存储过程是集中存储在存储过程
4、是集中存储在SQL Server中的中的SQL语语句和流程控制语句的预编译集合句和流程控制语句的预编译集合,用以实现某种任,用以实现某种任务(如查询)。这些语句务(如查询)。这些语句在一个名称下存储在一个名称下存储并作为并作为一个单元进行处理。一个单元进行处理。4第4页,本讲稿共103页使用存储过程的优势使用存储过程的优势 n 可以减少客户端代码的重复可以减少客户端代码的重复。只需创建存储过程一次并将。只需创建存储过程一次并将其存储在数据库中,以后即可在客户端程序中多次调用该存储过其存储在数据库中,以后即可在客户端程序中多次调用该存储过程。存储过程可由在数据库编程方面有专长的人员创建,并可独程
5、。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。立于程序源代码而单独修改。n 允许更快地执行允许更快地执行。如果某操作需要大量的。如果某操作需要大量的Transact-SQL代码或需要重复执行,使用存储过程将比在客户端执行代码或需要重复执行,使用存储过程将比在客户端执行Transact-SQL批代码的执行速度要快。存储过程在服务器批代码的执行速度要快。存储过程在服务器端经过预编译,生成查询计划,可以直接执行,而在客户端经过预编译,生成查询计划,可以直接执行,而在客户端每次运行端每次运行Transact-SQL语句时,都要从客户端重复发送,语句时,都要从客户端重复
6、发送,并且在并且在SQL Server每次执行这些语句时,都要对其进行编每次执行这些语句时,都要对其进行编译和优化。因此,存储过程执行速度更快。译和优化。因此,存储过程执行速度更快。5第5页,本讲稿共103页使用存储过程的优势使用存储过程的优势 n减少网络流量减少网络流量。例如,一个需要数百行。例如,一个需要数百行Transact-SQL代码的操作由一条执行过程代码代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数的单独语句就可实现,而不需要在网络中发送数百行代码。百行代码。n可以简化数据库管理可以简化数据库管理。例如,要修改某种查询,。例如,要修改某种查询,如果查询重复存
7、放在客户机上,则要在所有客户如果查询重复存放在客户机上,则要在所有客户机上修改查询,而使用存储过程可以集中修改。机上修改查询,而使用存储过程可以集中修改。n可作为安全机制使用可作为安全机制使用。例如,即使对于没有直接。例如,即使对于没有直接执行存储过程中语句的权限的用户,也可授予他执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。们执行该存储过程的权限。6第6页,本讲稿共103页存储过程的分类存储过程的分类 n系统存储过程系统存储过程:SQL Server内置的存储过程,存内置的存储过程,存储在储在master库中,主要用途是执行库中,主要用途是执行SQL Server的的某些
8、管理功能、显示有关数据库和用户的信息。某些管理功能、显示有关数据库和用户的信息。系统存储过程名以系统存储过程名以SP_开头,可以在任何数据库开头,可以在任何数据库中执行系统存储过程。中执行系统存储过程。n用户存储过程用户存储过程:用户自行创建并存储在用户数据:用户自行创建并存储在用户数据库中的存储过程。库中的存储过程。n临时存储过程临时存储过程:分为局部临时存储过程和全局临:分为局部临时存储过程和全局临时存储过程。时存储过程。7第7页,本讲稿共103页存储过程的分类存储过程的分类 局部临时存储过程名称以局部临时存储过程名称以#开头,存放在开头,存放在tempdb数据库中,只由创建并连接的用户使
9、数据库中,只由创建并连接的用户使用,当该用户断开连接时将自动删除局部临时用,当该用户断开连接时将自动删除局部临时存储过程。存储过程。全局临时存储过程名称以全局临时存储过程名称以#开头,存放在开头,存放在tempdb数据库中,允许所有连接的用户使用,数据库中,允许所有连接的用户使用,在所有用户断开连接时自动被删除。在所有用户断开连接时自动被删除。n远程存储过程:位于远程服务器上的存储过程。远程存储过程:位于远程服务器上的存储过程。n扩展存储过程:利用外部语言(如扩展存储过程:利用外部语言(如C)编写的存)编写的存储过程,以弥补储过程,以弥补SQL Server的不足之处,扩展新的不足之处,扩展新
10、的功能的功能8第8页,本讲稿共103页7.1.2 创建存储过程创建存储过程 n使用使用CREATE PROCEDURE语句语句 n使用企业管理器中的菜单命令使用企业管理器中的菜单命令 9第9页,本讲稿共103页CREATE PROCEDURE语句语句 CREATE PROC EDURE 存储过程名存储过程名;编号编号 参数参数 数据类型数据类型 VARYING =默认值默认值 OUTPUT ,.nWITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONAS SQL语句语句 .n 10第10页,本讲稿共103页参数说明参数说明 n存储过程名必须符合标识符的命名
11、规则,且对存储过程名必须符合标识符的命名规则,且对于数据库及其所有者必须是惟一的。于数据库及其所有者必须是惟一的。要创建局要创建局部临时存储过程,可以在存储过程名前面加一部临时存储过程,可以在存储过程名前面加一个个#号,要创建全局临时过程,可以在存储过程号,要创建全局临时过程,可以在存储过程名前面加两个名前面加两个#号。完整的名称(包括号。完整的名称(包括#或或#)不能超过)不能超过128个字符。个字符。n编号编号:可选整数,用来对同名的存储过程分组,:可选整数,用来对同名的存储过程分组,以便用一条以便用一条DROP PROCEDURE语句即可将同语句即可将同组的存储过程一起删除。组的存储过程
12、一起删除。11第11页,本讲稿共103页参数说明参数说明 n参数:过程中的参数参数:过程中的参数。在。在CREATE PROCEDURE语句中可以声明一个或多个参数。语句中可以声明一个或多个参数。用户必须在执行存储过程时提供每个所声明参用户必须在执行存储过程时提供每个所声明参数的值(除非定义了该参数的默认值)。参数数的值(除非定义了该参数的默认值)。参数名称前需要使用名称前需要使用符号。参数名称必须符合标识符号。参数名称必须符合标识符的命名规则。每个过程的参数仅用于该过程符的命名规则。每个过程的参数仅用于该过程本身。在其他过程中可以使用相同的参数名称。本身。在其他过程中可以使用相同的参数名称。
13、默认情况下,参数只能代替常量,而不能用于默认情况下,参数只能代替常量,而不能用于代替表名、列名或其他数据库对象的名称。代替表名、列名或其他数据库对象的名称。12第12页,本讲稿共103页参数说明参数说明 n数据类型:参数的数据类型。所有数据类型数据类型:参数的数据类型。所有数据类型(包括(包括text、ntext和和image)均可以用作存储过)均可以用作存储过程的参数。不过,程的参数。不过,cursor数据类型只能用于数据类型只能用于OUTPUT参数。如果指定的数据类型为参数。如果指定的数据类型为cursor,也必须同时指定,也必须同时指定VARYING和和OUTPUT关键关键字。字。nVA
14、RYING:指定作为输出参数支持的结果集:指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅(由存储过程动态构造,内容可以变化)。仅适用于游标参数。适用于游标参数。13第13页,本讲稿共103页参数说明参数说明 n默认值:参数的默认值。如果定义了默认值,默认值:参数的默认值。如果定义了默认值,不必指定该参数的值即可执行存储过程。默认不必指定该参数的值即可执行存储过程。默认值必须是常量或值必须是常量或NULL。如果要在存储过程中。如果要在存储过程中对该参数使用对该参数使用LIKE关键字,那么默认值中可以关键字,那么默认值中可以包含通配符(包含通配符(%、_、和和)。)。nOUT
15、PUT:表明参数是返回参数。该选项的值:表明参数是返回参数。该选项的值可以返回给可以返回给EXECUTE。使用。使用OUTPUT参数参数可将信息返回给调用过程。可将信息返回给调用过程。text、ntext和和image参数可用作参数可用作OUTPUT参数。使用参数。使用OUTPUT关键关键字的输出参数可以是游标占位符。字的输出参数可以是游标占位符。14第14页,本讲稿共103页参数说明参数说明 nRECOMPILE:表明不保存该存储过程的执行:表明不保存该存储过程的执行计划,该存储过程将在运行时重新编译。计划,该存储过程将在运行时重新编译。nENCRYPTION:指定:指定SQL Server
16、对对syscomments表中包含本表中包含本CREATE PROCEDURE语句文本的条目进行加密语句文本的条目进行加密nAS:用于指定该存储过程要执行的操作。:用于指定该存储过程要执行的操作。nSQL语句:存储过程中要包含的语句:存储过程中要包含的Transact-SQL语句。语句。15第15页,本讲稿共103页存储过程定义存储过程定义1.无参数存储过程无参数存储过程2.有参数存储过程(输入参数、输出参数有参数存储过程(输入参数、输出参数output)16第16页,本讲稿共103页例题例题1:建立一个查询存储过程,实现查:建立一个查询存储过程,实现查询成绩表中的所有及格成绩。(无参数询成绩
17、表中的所有及格成绩。(无参数存储过程)存储过程)create proc seleproc as select*from 成绩表成绩表where 成绩成绩=60执行存储过程:执行存储过程:exec seleproc结果如图:结果如图:17第17页,本讲稿共103页例例2:创建一个向成绩表添加记录的存储:创建一个向成绩表添加记录的存储过程。(有参数存储过程)过程。(有参数存储过程)create proc insertproc sno char(10),cno char(3),grade floatas insert into 成绩表成绩表 values(sno,cno,grade)执行存储过程:执
18、行存储过程:exec insertproc 0009,03,9818第18页,本讲稿共103页例例例例3 3:创建一个存储过程,要求根据输入的课程号统:创建一个存储过程,要求根据输入的课程号统:创建一个存储过程,要求根据输入的课程号统:创建一个存储过程,要求根据输入的课程号统计该课程平均分。计该课程平均分。计该课程平均分。计该课程平均分。create proc cnoavgscore cno char(2),avgscore float outputas declare cnon char(2)set cnon=select cnon=课程号课程号from 成绩表成绩表 where 课程号课程
19、号=cno if cnon begin select avgscore=avg(成绩成绩)from 成绩表成绩表 where 课程号课程号=cno end else print 此课程号不存在此课程号不存在 go19第19页,本讲稿共103页运行该存储过程:运行该存储过程:declare i floatexec cnoavgscore 02,i outputprint i20第20页,本讲稿共103页说明:说明:With encryption 子句的作用是将存储过程的原代子句的作用是将存储过程的原代码加密;码加密;With recompile子句的作用是对该存储过程重编译。子句的作用是对该存储
20、过程重编译。21第21页,本讲稿共103页例例4 n创建存储过程创建存储过程“增加成绩增加成绩”,将表,将表“成绩表成绩表”中所有学生的成绩增加中所有学生的成绩增加10%。USE 学生管理学生管理 GO CREATE PROCEDURE 增加成绩增加成绩 AS UPDATE 成绩表成绩表 SET 成绩成绩=成绩成绩*1.1 GO执行存储过程:执行存储过程:exec 增加成绩增加成绩 22第22页,本讲稿共103页例例5 (细节考虑)(细节考虑)n在创建一个存储过程时,如果已经存在同名的存储过程,在创建一个存储过程时,如果已经存在同名的存储过程,则不允许创建新的存储过程。可以将以上代码改写为:则
21、不允许创建新的存储过程。可以将以上代码改写为:USE 学生管理学生管理 -如果存在名称为如果存在名称为“增加成绩增加成绩”的存储过程,则将其删除的存储过程,则将其删除 IF EXISTS(SELECT name FROM sysobjects WHERE name=增加成绩增加成绩 AND type=P)DROP PROCEDURE 增加成绩增加成绩 GO CREATE PROCEDURE 增加成绩增加成绩 AS UPDATE 成绩表成绩表 SET 成绩成绩=成绩成绩*1.1 GO23第23页,本讲稿共103页使用企业管理器创建存储过程使用企业管理器创建存储过程n在企业管理器中,展开要创建存储
22、过程的数据在企业管理器中,展开要创建存储过程的数据库库,用鼠标右击用鼠标右击“存储过程存储过程”,在弹出菜单中单,在弹出菜单中单击击“新建存储过程新建存储过程”命令,打开新建存储过程命令,打开新建存储过程对话框,如下图:对话框,如下图:24第24页,本讲稿共103页使用企业管理器创建存储过程使用企业管理器创建存储过程 在该对话框的文本框中有以下的默认语句:在该对话框的文本框中有以下的默认语句:CREATE PROCEDURE OWNER.PROCEDURE NAME AS 这是这是CREATE PROCEDURE语句的开始部分,语句的开始部分,存储过程的具体文本需要用户自己输入。例如,存储过程
23、的具体文本需要用户自己输入。例如,将以上默认语句修改成:将以上默认语句修改成:CREATE PROCEDURE 增加成绩增加成绩 AS UPDATE 成绩表成绩表 SET 成绩成绩=成绩成绩*1.1 GO25第25页,本讲稿共103页7.1.3 执行存储过程执行存储过程 EXEC UTE 返回状态返回状态=存储过程名存储过程名|存储过程名变量存储过程名变量 参数名称参数名称=值值|变量变量 OUTPUT|DEFAULT ,.n WITH RECOMPILE 26第26页,本讲稿共103页参数说明参数说明n返回状态:是一个可选的整型变量,保存存储过程返回状态:是一个可选的整型变量,保存存储过程的
24、返回状态。这个变量在用于的返回状态。这个变量在用于EXECUTE语句前,语句前,必须在批处理、存储过程或函数中声明过。必须在批处理、存储过程或函数中声明过。n存储过程名:要调用的存储过程的名称。存储过程名:要调用的存储过程的名称。n存储过程名变量:局部变量名,代表存储过程的存储过程名变量:局部变量名,代表存储过程的名称。名称。n参数名称:存储过程的参数,在参数名称:存储过程的参数,在CREATE PROCEDURE语句中定义。参数名称前必须加上符语句中定义。参数名称前必须加上符号号。在使用格式。在使用格式“参数参数=值值”时,参数名称和常时,参数名称和常量不一定按照量不一定按照CREATE P
25、ROCEDURE语句中定义语句中定义的顺序出现。但是,如果有一个参数使用的顺序出现。但是,如果有一个参数使用“参数参数=值值”格式,则其他所有参数都必须使用这种格式。格式,则其他所有参数都必须使用这种格式。27第27页,本讲稿共103页参数说明参数说明n值:过程中参数的值。如果没有指定参数名称,参值:过程中参数的值。如果没有指定参数名称,参数值必须以数值必须以CREATE PROCEDURE语句中定义的语句中定义的顺序给出。顺序给出。如果在如果在CREATE PROCEDURE语句中定义了默语句中定义了默认值,用户执行该存储过程时可以不必指定对应认值,用户执行该存储过程时可以不必指定对应的参数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 过程 触发器 ppt 优秀 课件
限制150内