存储过程和触发器

上传人:飞*** 文档编号:2870510 上传时间:2017-07-28 格式:PPT 页数:132 大小:1.04MB
返回 下载 相关 举报
存储过程和触发器_第1页
第1页 / 共132页
存储过程和触发器_第2页
第2页 / 共132页
存储过程和触发器_第3页
第3页 / 共132页
存储过程和触发器_第4页
第4页 / 共132页
存储过程和触发器_第5页
第5页 / 共132页
点击查看更多>>
资源描述

《存储过程和触发器》由会员分享,可在线阅读,更多相关《存储过程和触发器(132页珍藏版)》请在金锄头文库上搜索。

1、第9章 存储过程和触发器,在SQL Server应用操作中,存储过程和触发器扮演相当重要的角色,基于其预编译并存储在SQL Server数据库中的特性,不仅能提高应用效率,确保一致性,更能提高系统执行速度。同时,使用触发器来完成业务规则,达到简化程序设计的目的。本章首先简要介绍了Transact-SQL语言,之后介绍存储过程和触发器的作用,并讨论使用SQL Server Management Studio和Transact-SQL语句来创建、修改、删除存储过程和触发器的方法。,本章提纲,9.1 Transact-SQL9.2 存储过程9.3 触发器9.4 本章小结,9.1 Transact-S

2、QL,国际化标准组织ISO、ANSI等为了避免各数据库厂商各自为政、产品语言混乱的局面,制定了一系列的国际标准。每个数据库厂商都会基于此标准来开发属于自己的SQL语言以适应其数据库的功能需要。微软也基于SQL标准做了大幅度的扩充开发了自己的数据库语言,称为Transact-SQL,简称T-SQL。它是标准 SQL程序设计语言的增强版,是应用程序与 SQL Server 沟通的主要语言。Transact-SQL做为SQL Server功能的核心,不仅可以完成数据库的查询,而且具有数据库管理的功能。根据Transact-SQL 提供标准 SQL的DDL 和 DML 功能,加上延伸的函数、系统预存程

3、序以及程序设计结构(如 IF 和 WHILE),让程序设计更有弹性。,9.1.1 Transact-SQL 脚本,一系列Transact-SQL 语句按照特定的顺序组织在一起称为脚本,如果将脚本存储在磁盘文件中,则该文件称为脚本文件。可以在SQL Server Management Studio代码编辑器、sqlcmd等管理工具中输入或打开脚本文件,这些工具将按照脚本中Transact-SQL 语句的先后顺序来执行。Transact-SQL脚本可以按照功能划分为若干代码段,每一段称为一个批处理,用GO命令表示批处理的结束。每一个脚本中可以包含一个或多个批处理,如果Transact-SQL脚本中

4、没有GO命令,那么它将被作为单个批处理来执行。Transact-SQL脚本可以用来执行以下操作:在服务器上保存用来创建和填充数据库的步骤永久副本,作为一种备份机制。通过脚本可以实现计算机间快速传递SQL语句。可以通过脚本进行进一步分析,发现代码中的问题、了解代码或更改代码。,9.1.2 Transact-SQL语法约定,下表列出了 Transact-SQL 参考的语法关系图中使用的约定,并进行了说明。,9.1.3 常量,常量指在程序运行过程中值不变的量。常量的格式按其所代表的数据值的数据类型的不同而有所不同。根据常量值的不同类型,分为字符串常量、整型常量、实型常量、日期时间常量、货币常量和惟一

5、标识常量等。1字符串常量字符串常量分为ASC常量和Unicode常量,其中ASC数据的每一个字符用一个字节存储,Unicode数据的每一个字符用两个字节存储。ASC常量必须包含在一对单引号中,由ASC字符构成。如SQL Server ,但是如果字符串本身就包含单引号,采用将字符串包含在一对单引号中,以两个单引号来表示字符串本身所包含的单引号,如This s a book。也可采用将字符串包含在一对双引号中,使字符串本身包含单引号,如This s a book。另外,连续两个单引号且中间不含任何空格等字符(即),则代表空字符串。Unicode常量与字符串常量的格式类似,唯一差别是必须以大写的字母

6、N作为前缀字符(N必须大写),如SQL Server。,9.1.3 常量,2整型常量整型常量由没有用引号括起来且不含小数点的一串数字表示。如:123,45。3实型常量实型常量分为定点表示和浮点表示两种方式,其中:定点表示是由没有用引号括起来且包含小数点的一串数字表示,如45.67。浮点表示是使用科学记数法表示,如13.2E2。4日期时间常量日期时间常量使用特定格式的字符日期值表示,并被单引号括起来。日期时间常量可以包含日期、时间或日期时间都有,如1/8/2007,15:30:20 PM,1/10/2008 13:45:20 PM。,9.1.3 常量,5货币常量货币常量以一个货币符号$作为前缀的

7、数字组成,如$45.6,$27。6惟一标识常量惟一标识常量以字符串常量或二进制常量的形式表示,若以字符串的形式表示,只需将全球性唯一标识包含在一对单引号中;若要以二进制常量表示,以0x作为前缀,再加上后面的16进制数值。如00-0D-87-93-77-14,0x786rew263sa1。,9.1.4 变量,变量是指在程序运行过程中其值可以发生变化的量,是Transact-SQL 批处理和脚本中可以保存数据值的对象。声明或定义一个变量后,批处理中的某条语句可以给此变量赋予为一个具体值,称为赋值,该语句称为赋值语句。该赋值语句后面的语句可以使用该变量中的值或重新给该变量赋值。因此,可以使用变量保存

8、在程序运行过程中的计算结果或输入输出结果。使用变量时应注意以下几点:遵循“先定义再使用”的原则;定义一个变量包括用合法的标识符作为变量名和指定变量的数据类型;建议给变量赋予能代表变量用途的标识符。,9.1.4 变量,在SQL Server中有局部变量与系统变量两种。在使用方法以及具体意义上,这两种变量有较大的区别。局部变量的作用域是在一定范围内使用,做为程序中各类型数据的最佳临时保存处。系统变量是由SQL Server系统提供的预先声明好的变量,以函数的形式出现,通过在名称前保留两个符号区别于局部变量。,9.1.4 变量,局部变量的声明使用DECLARE声明局部变量基本语法如下:DECLARE

9、 local_variable data_type ,.n其中各参数说明如下:local_variable:变量的名称。变量名必须以 at 符 () 开头。data_type:数据类型。变量不能是 text、ntext 或 image 数据类型。 n:指示可以指定多个变量并对变量赋值的占位符。,9.1.4 变量,2变量赋值通过SET和SELECT命令可以为已定义的变量赋值,基本语法如下:SET local_variable= expression )SELECT local_variable= expression )其中各参数说明如下:local_variable:除 cursor、text

10、、ntext、image 或 table 以外的任何类型变量的名称。变量名称必须以 at 符号 () 开头。变量名称必须符合标识符规则。Expression:任何有效的表达式。不能在一个SET语句中同时对几个变量赋值,如果需要同时为几个变量赋值,必须分开进行。,9.1.4 变量,SELECT和SET在SQL Server中都能实现对变量的赋值操作,两者的区别在于:(1)SET是将值直接赋给变量,SELECT是先将数据查寻出来,然后再赋给变量,也就是说先执行SELECT查寻,然后再执行SET把值赋给变量,如果查寻出来的结果包括多行时,变量的值只为最后一条记录的值。(2)如果有固定的值,最好用SE

11、T赋值,如果把查寻出来的结果赋给变量,则使用SELECT赋值。,9.1.4 变量,3使用变量比如,在查询语句中使用定义并已经赋值的变量/*在select语句中使用变量作为条件来查询*/Use dbstudentsGoDECLARE stuName nChar -使用DECLARE定义变量SET stuName=王% -为变量赋值SELECT * FROM tblStudent WHERE stuName like stuNameGo执行结果如下:,9.1.5 运算符与表达式,运算符是一种符号,用来指定要在一个或多个表达式中执行的操作。表达式是由变量、常量、运算符、函数或圆括号按一定的规则组合而

12、成的。简单表达式可以是一个常量、变量、列或标量函数,而复杂表达式可以由运算符将两个或更多的简单表达式联接起来而组成。在SQL Server中主要包括算术运算符、比较运算符、逻辑运算符和字符串运算符等。,9.1.5 运算符与表达式,1算术运算符算术运算符可以执行数学运算,运算之后返回结果为数值型数据。具体内容见表所示。,9.1.5 运算符与表达式,2比较运算符比较运算符测试两个表达式是否相同,运算之后返回结果为布尔型(TRUE和FALSE)。除了 text、ntext 或 image 数据类型的表达式外,比较运算符可以用于所有的表达式。具体内容见表所示。,9.1.5 运算符与表达式,3逻辑运算符

13、逻辑运算符对某些条件进行判断,运算之后返回结果和比较运算符一样为布尔型(TRUE和FALSE)。具体内容见表所示。,9.1.5 运算符与表达式,4字符串串联运算符SQL Server中只有一个字符串串联运算符,就是加号 (+),字符串串联运算符可以将字符串串联起来。其基本语法如下:expression + expression其中expression字符和二进制数据类型类别中的任何一个数据类型的有效表达式,但 image、ntext 或 text 数据类型除外。两个表达式必须具有相同的数据类型,或者其中一个表达式必须能够隐式转换为另一个表达式的数据类型。默认情况下,对于 varchar 数据类

14、型的数据,空的字符串将被解释为空字符串。在串联 varchar、char 或 text 数据类型的数据时,空的字符串被解释为空字符串。例如,abc + + def 被存储为 abcdef。,9.1.5 运算符与表达式,5运算符的优先顺序当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后次序。执行的顺序可能严重地影响所得到的值。运算符的优先级别如表9.5中所示。在较低级别的运算符之前先对较高级别的运算符进行求值。注意:当一个表达式中的两个运算符有相同的运算符优先级别时,将按照它们在表达式中的位置对其从左到右进行求值。,9.1.6流程控制语句,流程控制语句主要用于控制程序运行与流程分

15、支的命令,用来实现复杂的逻辑和业务规则运算。流程控制语句主要包括条件语句、循环语句等。,9.1.6流程控制语句,9.1.6.1 BEGINEND语句BEGINEND语句主要将一系列的Transact-SQL 语句组合起来形成一个逻辑块,将它们视为单一个体来执行。其中BEGIN 和 END 是控制流语言的关键字。 1BEGINEND语句基本语法如下: BEGIN sql_statement | statement_block END其中参数说明如下: sql_statement | statement_block:使用语句块定义的任何有效的 Transact-SQL 语句或语句组。,9.1.6流

16、程控制语句,9.1.6.1 BEGINEND语句2利用BEGINEND语句查询学生基本信息表BEGINUSE dbStudentsGOSELECT * FROM tblStudentENDGO在SQL Server中允许使用嵌套的BEGINEND语句。,9.1.6流程控制语句,9.1.6.2 PRINT语句PRINT语句用于向客户端返回用户定义消息。PRINT msg_str|local_variable|string_expr其中各参数说明如下:msg_str:字符串或 Unicode 字符串常量。local_variable:任何有效的字符数据类型的变量。local_variable 的数据类型必须是 char 或 varchar,或者必须能够隐式转换为这些数据类型。string_expr:返回字符串的表达式。可包括串联的文字值、函数和变量。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号