《存储过程和函数》课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《存储过程和函数》课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储过程和函数 存储 过程 函数 课件
- 资源描述:
-
1、幻灯片幻灯片1(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据批处理:批处理:有助于减少网络堵塞有助于减少网络堵塞(network traffic)多个命令一起被提交和执行多个命令一起被提交和执行 批处理批处理(batch)是一组一起提交给是一组一起提交给SQL Server执执行的行的SQL语句语句在结尾使用在结尾使用GO命令以发送命令以发送SQL语句到一个语句到一个SQL Server实例实例当编译器读取到当编译器读取到GO语句时,会把语句时,会把GO前面的语前面的语句当成一个批处理,并把这些语句打包发送给句当成一个批处理,
2、并把这些语句打包发送给服务器。服务器。特点:批一次性的发送到特点:批一次性的发送到SQL SERVER服务器服务器执行,服务器将批处理语句编译成一个可执行执行,服务器将批处理语句编译成一个可执行单元,这种单元称为单元,这种单元称为执行计划执行计划(execution plan)举例举例创建批处理创建批处理幻灯片幻灯片2(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据 说明:说明:如果批处理中出现任何编译错误如果批处理中出现任何编译错误(compilation error),导致执行计划无法编,导致执行计划无法编译,从而批处理中的
3、任何语句都无法执行。译,从而批处理中的任何语句都无法执行。如果编译完成,在运行中出错,如果编译完成,在运行中出错,(run-time error)则执行停止,出错之前执行的语句则执行停止,出错之前执行的语句不受影响。不受影响。幻灯片幻灯片3(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据变量变量 使用变量存储值使用变量存储值 输入数据,中间值,最后结果输入数据,中间值,最后结果 使用使用PRINT语句显示用户定义的消息和变量语句显示用户定义的消息和变量的值的值 如果变量不是字符串类型,要通过如果变量不是字符串类型,要通过conv
4、ert函数进函数进行转换行转换 变量类型:变量类型:全局变量全局变量(Global variables)记录服务器的活动状态记录服务器的活动状态 是事先定义好的变量,不能由用户参与定义,是事先定义好的变量,不能由用户参与定义,只读只读 用用标记标记 (举例)举例)幻灯片幻灯片4(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据 创建局部变量创建局部变量 DECLARE variable_name data_type DECLARE MyCounter int 多个变量,用,隔开多个变量,用,隔开 DECLARE LastName
5、nvarchar(30),FirstName nvarchar(20),State nchar(2)变量的作用域从声明变量的地方开始到声明变变量的作用域从声明变量的地方开始到声明变量的批处理或存储过程的结尾。量的批处理或存储过程的结尾。创建局部变量创建局部变量幻灯片幻灯片5(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据 第一次声明变量时,其值设置为第一次声明变量时,其值设置为 NULL 赋值的方法:赋值的方法:SET 语句语句 SET avgscore=60.0 SELECT 语句的选择列表中当前所引用值为语句的选择列表中当前
6、所引用值为变量赋值变量赋值 为局部变量赋值为局部变量赋值幻灯片幻灯片6(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据 多行注释多行注释 /*.*/单行注释单行注释 -注释注释幻灯片幻灯片7(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据 以下规则适用于批处理:以下规则适用于批处理:CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TRIGGER 和和 CREATE VIEW 语句
7、不能在批处理中与其语句不能在批处理中与其他语句组合使用。批处理必须以他语句组合使用。批处理必须以 CREATE 语句开始。所语句开始。所有跟在该批处理后的其他语句将被解释为第一个有跟在该批处理后的其他语句将被解释为第一个 CREATE 语句定义的一部分。语句定义的一部分。不能在同一个批处理中更改表,然后引用新列。不能在同一个批处理中更改表,然后引用新列。如果如果 EXECUTE 语句是批处理中的第一句,则不需要语句是批处理中的第一句,则不需要 EXECUTE 关键字。如果关键字。如果 EXECUTE 语句不是批处理中语句不是批处理中的第一条语句,则需要的第一条语句,则需要 EXECUTE 关键
8、字。关键字。创建批处理的指导方针创建批处理的指导方针幻灯片幻灯片8(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据课间思考课间思考下面哪个语句可以被用在批处理中下面哪个语句可以被用在批处理中?1.CREATE FUNCTION 2.CREATE RULE 3.DECLARE答案:答案:3.DECLARE幻灯片幻灯片9(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据允许你使用下面的结构来控制语句的流程:允许你使用下面的结构来控制语句的流程:IFELSE 语句语句CA
9、SE 语句语句WHILE 语句语句程序块语句程序块语句幻灯片幻灯片10(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据语法:语法:BEGIN sql_statement|statement_block END 在处理时,整个语句块看作是一条在处理时,整个语句块看作是一条SQL语句。语句。程序块语句程序块语句Begin.end幻灯片幻灯片11(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据IFELSE 语句:语句:基于布尔表达式的结果执行特定的操作基于布尔表达式的结
10、果执行特定的操作语法:语法:IF boolean_expression sql_statement|statement_block ELSE boolean_expression sql_statement|statement_block让我们看看如何让我们看看如何使用结构(续)使用结构(续)幻灯片幻灯片12(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据DECLARE Rate moneySELECT Rate=Rate FROM HumanResources.EmployeePayHistoryWHERE EmployeeI
11、D=23IF Rate 15PRINT Review requiredELSEBEGINPRINT Review not required PRINT your rate=PRINT RateEND幻灯片幻灯片13(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据CASE 语句:语句:评估条件的一个列表并且返回可能结果中的一个评估条件的一个列表并且返回可能结果中的一个语法:语法:CASE WHEN boolean_expression THEN expressionWHEN boolean_expression THEN expr
12、ession.ELSE expressionEND让我们看看如何让我们看看如何使用结构(续)使用结构(续)幻灯片幻灯片14(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据SELECT EmployeeID,Marital Status=CASE MaritalStatusWHEN M THEN MarriedWHEN S THEN SingleELSE Not specifiedENDFROM HumanResources.Employee幻灯片幻灯片15(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server
13、 2005 查询和管理数据查询和管理数据WHILE 语句:语句:重复执行只要给定的条件为真重复执行只要给定的条件为真使用使用BREAK 和和 CONTINUE语句来控制语句来控制WHILE循环中的语句循环中的语句语法:语法:WHILE boolean_expression sql_statement|statement_blockBREAKsql_statement|statement_blockCONTINUEBREAK 导致从导致从WHILE 循环中退出。将执行出现在循环中退出。将执行出现在 END 关键字关键字(循环结束的标记)后面的任何语句。(循环结束的标记)后面的任何语句。CONTI
14、NUE 使使 WHILE 循环重新开始执行,忽略循环重新开始执行,忽略 CONTINUE 关键字关键字后面的任何语句。后面的任何语句。使用结构(续)使用结构(续)幻灯片幻灯片16(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据Example:(WHILE)WHILE(SELECT AVG(Rate)+1 from HumanResources.EmployeePayHistory)127BREAKELSECONTINUEEND幻灯片幻灯片17(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查
15、询和管理数据查询和管理数据SQL Server 中的错误可以用以下两种方式处理:中的错误可以用以下两种方式处理:使用使用TRY-CATCH 结构结构 使用使用RAISERROR语句语句处理错误和异常处理错误和异常幻灯片幻灯片18(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据在以下情形下使用在以下情形下使用TRY-CATCH 结构:结构:Try 块包含一组块包含一组T-SQL语句。如果语句。如果TRY块的语句中发块的语句中发生任何错误,控制将传递给生任何错误,控制将传递给CATCH块。块。CATCH块包含另外一组语句,这些语句在
16、错误发生块包含另外一组语句,这些语句在错误发生时执行。时执行。BEGIN TRY sql_statement|statement_block END TRY BEGIN CATCH sql_statement|statement_block END CATCH ;TRY-CATCH在以前的版本中是没有的。在以前的版本中是没有的。处理错误和异常(续)处理错误和异常(续)幻灯片幻灯片19(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据 在在CATCH块中,可以使用以下的系统函数来确块中,可以使用以下的系统函数来确定关于错误的信息:定
17、关于错误的信息:ERROR_NUMBER()返回错误号。返回错误号。ERROR_MESSAGE()返回错误消息的完整文本。此返回错误消息的完整文本。此文本包括为任何可替换参数(如长度、对象名称或时文本包括为任何可替换参数(如长度、对象名称或时间)提供的值。间)提供的值。ERROR_SEVERITY()返回错误严重性。返回错误严重性。ERROR_STATE()返回错误状态号。返回错误状态号。ERROR_LINE()返回导致错误的例程中的行号。返回导致错误的例程中的行号。ERROR_PROCEDURE()返回出现错误的存储过程返回出现错误的存储过程或触发器的名称。或触发器的名称。处理错误和异常(续
18、)处理错误和异常(续)幻灯片幻灯片20(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据RAISERROR:被用于返回消息到商业程序被用于返回消息到商业程序使用与系统错误或数据库引擎产生的警告消息使用与系统错误或数据库引擎产生的警告消息相同的格式相同的格式也可能返回用户定义的错误消息也可能返回用户定义的错误消息让我们看看如何让我们看看如何处理错误和异常(续)处理错误和异常(续)幻灯片幻灯片21(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据错误由错误由master.
19、dbo.sysmessages表维护。每表维护。每一个错误代码都有相应的级别和描述。一个错误代码都有相应的级别和描述。错误定义的级别从错误定义的级别从0到到25。20以上的错误代以上的错误代表重大错误,通常意味着该错误会导致存表重大错误,通常意味着该错误会导致存储进程立刻终止,并且所有的客户连接都储进程立刻终止,并且所有的客户连接都要重新初始化。要重新初始化。非关键性错误只是禁止掉当前运行的程序非关键性错误只是禁止掉当前运行的程序行,并继续执行。行,并继续执行。处理错误和异常(续)处理错误和异常(续)幻灯片幻灯片22(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2
20、005 查询和管理数据查询和管理数据 语法语法RAISERROR(msg_id msg_str ,severity,state ,argument ,.n )WITH option ,.n 幻灯片幻灯片23(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据课间思考课间思考msg_id 定制消息的错误代码。定制消息的错误代码。.RAISERROR 接受任何大于接受任何大于13000的的数字数字,但是定制信息但是定制信息msg_id要大于等于要大于等于50000。msg_str 定制信息的文本。定制信息的文本。severity 定制信
21、息的级别。从定制信息的级别。从 0 to 25,19-25 是重大错误代码。是重大错误代码。state 呈现导致错误的状态,不在呈现导致错误的状态,不在SQL内部使用。内部使用。argument 定义在错误信息中的可以替换的值。定义在错误信息中的可以替换的值。WITH 有三个选项有三个选项:WITH LOG 纪录错误。只能用于级别高于纪录错误。只能用于级别高于19的错误。的错误。WITH NOWAIT 将错误立刻发送到客户端将错误立刻发送到客户端 WITH SETERROR sets ERROR to the value specified by msg_id,regardless of se
22、verity level.幻灯片幻灯片24(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据课间思考课间思考哪个系统函数返回错误消息的文本当用在哪个系统函数返回错误消息的文本当用在CATCH块中的时候块中的时候?答案:答案:ERROR_MESSAGE()幻灯片幻灯片25(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据课间思考课间思考你如何在批处理中返回用户定义的错误消息你如何在批处理中返回用户定义的错误消息?答案:答案:使用使用RAISERROR语句语句幻灯片幻灯片
23、26(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据批处理是一系列一起提交到服务器执行的批处理是一系列一起提交到服务器执行的SQL语句。语句。你可以使用变量存储一个临时值。你可以使用变量存储一个临时值。你可以使用你可以使用PRINT语句来显示用户定义消息或屏幕上一语句来显示用户定义消息或屏幕上一个变量的内容。个变量的内容。你可以在批处理中使用注释实体给代码写注释。你可以在批处理中使用注释实体给代码写注释。你可以使用你可以使用IFELSE语句以条件执行语句以条件执行SQL语句。语句。CASE语句求一系列条件的值并且返回各种可能结果
24、中语句求一系列条件的值并且返回各种可能结果中的一个。的一个。你可以在批处理中使用你可以在批处理中使用WHILE语句以允许一系列语句以允许一系列T SQL语句重复执行只要给定条件为真。语句重复执行只要给定条件为真。BREAK语句导致从语句导致从WHILE循环中退出。循环中退出。小结(续)小结(续)幻灯片幻灯片27(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据小结(续)小结(续)CONTINUE语句导致语句导致WHILE循环重启,忽略循循环重启,忽略循环中环中CONTINUE语句后的任何语句。语句后的任何语句。在批处理中处理错误的
25、两种方法是:在批处理中处理错误的两种方法是:TRY-CATCH 结构结构RAISERROR 语句语句幻灯片幻灯片28(共(共31张)张)第第11章章Ver.1.0使用使用SQL Server 2005 查询和管理数据查询和管理数据存储过程:存储过程:(stored procedurre)是数据库中保存的预编译的数据库对象是数据库中保存的预编译的数据库对象批处理是临时的批处理是临时的存储过程可以极大的减少网络需求存储过程可以极大的减少网络需求 系统存储过程:系统存储过程:sp_ 不要以不要以 sp_ 为前缀创建任何存储过程。为前缀创建任何存储过程。sp_ 前缀是前缀是 SQL Server 用来
展开阅读全文