T-SQL编程

2018-11-19 21:03

6章

T-SQL编程 教学目标

本章介绍了T-SQL程序设计中GO语句的使用、变量的定义、输入输出的格式以及注释的使用,介绍了流程控制语句以及游标的使用。

教学要求

知 识 要 点 能 力 要 求 掌握T-SQL程序设计中GO语句的使用、变量的定义以及注释的使用 掌握T-SQL程序设计中流程控制语句的使用 掌握T-SQL程序设计中游标的使用 相 关 知 识 GO语句、变量、注释 选择语句、循环语句、 转移语句、等待语句、返回语句 游标的基础、游标的使用 T-SQL基础 流程控制语句 游标的使用

第6章 T-SQL编程

导读

上一章介绍的插入、查询、更新和删除等SQL语句均是单条的语句,不能定义变量,没有流程控制语句,因此,无法实现复杂的业务规则控制。为解决此问题,本章介绍SQL程序设计,将学习变量的定义、赋值、流程控制和游标等内容。其中流程控制语句包括顺序、选择、循环结构的控制语句,是数据库应用程序设计的基础。

通过本章学习,读者应掌握如何用流程控制语句进行SQL设计程序,理解游标的意义,掌握游标的创建与使用。

6.1 T-SQL基础

6.1.1 GO的使用

批处理是一组SQL语句的集合,以结束符GO终结。批处理中的所有语句被一次提交SQL Server 2005,SQL Server 2005将这些语句编译为一个执行单元,称为SQL Server 2005执行计划。

批处理用GO语句作为批处理的结束标志,若没有GO语句,默认所有的语句属于一个批处理。

提示:在一个批处理中,如果出现编译错误(如某条语句存在语法错误),SQL Server 2005

将取消整个批处理内所有语句的执行。 6.1.2 T-SQL变量

变量是SQL Server 2005用来在语句之间传递数据的方式之一,是一种语言中必不可少的组成部分。

1.T-SQL变量

T-SQL变量也称为局部变量,或用户自定义变量。一般用于临时存储各种类型的数据,以便在SQL语句之间传递。例如作为循环变量控制循环次数,暂时保存函数或存储过程返回的值,也可以使用table类型代替临时表临时存放一张表的全部数据。

局部变量的作用范围是在一个批处理、一个存储过程或一个触发器内,其生命周期从定义开始到它遇到的第一个GO语句或者到存储过程、触发器的结尾结束,即局部变量只在当前的批处理、存储过程、触发器中有效。

提示:如果在批处理、存储过程、触发器中使用其他批处理、存储过程、触发器定义的变

量,则系统出现错误并提示“必须声明变量”。

用DECLARE语句声明定义局部变量 命令格式:

DECLARE {@变量名 数据类型[(长度)] } [ ,?n ]

125

SQL Server 2005 数据库原理与应用案例教程

说明:

? 局部变量必须以@开头以区别字段名变量。 ? 变量名必须符合标识符的构成规则。

? 系统固定长度的数据类型不需要指定长度,例如:INT或DATETIME。

提示:局部变量的数据类型可以是系统类型,也可以是用户自定义类型,但不允许是text、

ntext、image类型。 【例6-1】 变量的定义

DECLARE @name CHAR (8) --定义@name长度为8的字符型

DECLARE @m INT,@n DECIMAL (6,2)

--定义@m为整型,@n为小数总长度6位,其中小数2位,不计小数点

6.1.3 输入输出

1.输入

用SET、SELECT给局部变量赋值 命令格式:

说明:

? SET只能给一个变量赋值,而SELECT可以给多个变量赋值。

? 两种格式可以通用,建议首选使用SET,而不推荐使用SELECT语句。 ? SELECT也可以直接使用查询的单值结果给局部变量赋值。如: SELECT @局部变量=表达式或字段名 FROM 表名 WHERE 条件

提示:表达式中可以包含SELECT语句子查询,但只能是集合函数返回的单值,且必须用

圆括号括起来。

2.输出

用PRINT、SELECT显示局部变量的值 命令格式:

说明:

? 使用PRINT必须有且只能有一个表达式,其值在查询分析器的“消息”子窗口

显示。

? 使用SELECT实际是无数据源检索格式,可以有多个表达式,其结果是按数据表

的格式在查询分析器的“网格”子窗口显示,若不指定别名显示标题“(无名列)”。

126

PRINT 表达式

SELECT 表达式 [ ,?n ]

SET @局部变量=表达式

SELECT { @局部变量=表达式} [,?n]

【例6-2】 自定义局部变量的使用

第6章 T-SQL编程

USE Student_Course_Teacher

DECLARE @name varchar(15), @学号 char(22)

SELECT @学号='学号为s1的学生的姓名:' -- 也可使用SET SET @name= (SELECT Sn FROM s where sno='s1') PRINT @学号+ @name

GO

运行结果如图6.1所示。使用PRINT在“消息”子窗口输出表达式的值

图6.1 自定义局部变量的使用

想一想:

如果将例题中的输出显示改用SELECT语句,输出结果是什么样的? 6.1.4 注释

注释是程序的说明或暂时禁止使用的语句而不被执行,使用注释可以使程序清晰可读,有助于以后的管理维护。

SQL Server支持行注释和块注释两种方式。

1.行内注释 命令格式:

--注释内容

说明:

(1) 以两个减号开始直到本行结束的全部内容都被认为是注释内容。

(2) 行注释可以单独一行,也可以跟在SQL语句之后,注释内容中还可以有双减号(允许嵌套),双减号之后也可以没有内容。

2.块注释 命令格式:

/*注释内容*/ 说明:

(1) 以“/*”开始不论多少行,直到“*/”之间的所有文字都被作为注释内容。

(2) 块注释可以从一行开头开始,也可以跟在SQL语句之后开始,注释内容中还可以

127

SQL Server 2005 数据库原理与应用案例教程

有“/*”字符组合,也可以有单个“*”“/”字符,但不能有“*/”组合(不允许嵌套),中间可以没有注释内容。 【例6-3】 注释的使用

USE Student_Course_Teacher /*打开数据库*/

GO -- 一个批处

理结束

6.2 流程控制语句

流程控制语句是控制程序执行的命令,是指那些用来控制程序执行和流程分支的命令,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。比如条件控制语句、循环语句等,可以实现程序的结构性和逻辑性,以完成比较复杂的操作。 6.2.1 语句块

BEGIN?END语句能够将多个T-SQL语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGIN?END语句,将多个T-SQL语句组合成一个语句块。 6.2.2 选择

1.IF/ELSE条件语句

IF?ELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。IF?ELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQL Server允许嵌套使用IF?ELSE语句,而且嵌套层数没有限制。

命令格式:

IF 逻辑条件表达式 语句块1 [ELSE

语句块2]

说明:

(1) IF语句执行时先判断逻辑条件表达式的值(只能取TRUE或FLASE),若为真则执行语句块1,为假则执行语句块2,没有ELSE则直接执行后继语句。

(2) 语句块1、语句块2可以是单个SQL语句,如果有两个以上语句,但必须放在BEGIN?END语句块中。

【例6-4】 查询教师平均工资,如果平均工资大于3000元,则显示“收入水平较高”,否则显示“收入水平较低”。

Use Student_Course_Teacher Go

IF (SELECT AVG (sal) FROM t)>3000

128


T-SQL编程.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013~2014学年第二学期期中试卷七年级数学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: