1、数据 库 原理与 应 用(第 2版)高等院校 计 算机教材系列第 12章 存 储过 程和触 发 器 12.1 变 量及流程控制 语 句 12.2 存 储过 程12.1 变 量及流程控制 语 句 12.1.1 变 量 1.变 量的 种类 2. 变 量的 声 明 与赋值 12.1.2 流程控制 语 句 1. BEGIN END 语 句 2. IF ELSE 语 句 3. WHILE语 句1.变 量的 种类 变 量是被 赋 予一定的 值 的 语 言元素。 在 T-SQL中, 变 量分 为 全局 变 量和局部 变 量: 全局 变 量: 开 始的 变 量 局部 变 量:以 开 始的 变 量。 全局 变
2、量 是由系 统 提供且 预 先 声 明的 变 量,用 户 一般只能 查 看不能修改全局 变 量的 值 。 局部 变 量 是用 户 用以保存特定 类 型的 单个数据 值 的 对 象, 它 局部于一 个语 句批。2. 变 量的 声 明 在 SQL Server中,局部 变 量必 须 先 声 明,再使用。 声 明 变 量的 语 句格式:DECLARE 局部 变 量名 数 据 类 型 变 量名最多可以包含 128个 字符。 局部 变 量的 数 据 类 型可以是系 统数 据 类 型,也可以是用 户 自己定 义 的 数 据 类 型,但不能是 text或image类 型。 使用 DECLARE语 句 声 明
3、一 个 局部 变 量后, 变 量的值将 被初始化 为 NULL。2.变 量的 赋值 变 量的 赋值语 句 为 :SET 局部 变 量名 = 值 | 表 达 式SELECT 局部 变 量名 = 值 | 表 达 式 SET语 句是 对 局部 变 量 赋值 的首 选 方法。 说 明: 变 量只能出 现 在使用常 数 的位置上。在 标 准的 SQL语 句中, 变 量不能用在表、字段或其他 数 据 库对 象的名 称 的位置上,也不能用在 关键 字的位置上。示例 声 明三 个 整型 变 量: x 、 y 和 z , 并给x 、 y 变 量分 别赋 予一 个 初 值 ,然后 将这两个变 量的和 值赋给 z
4、, 并显 示 变 量z 的 结 果。DECLARE x int, y int, z intSET x = 10SET y = 20SET z = x + yPrint z关 于 PRINT语 句 作用: 将 信息 显 示在 显 示器上。 语 法格式:PRINT 字符串常量 | 局部 变 量名 | 字符串表 达式 局部 变 量名 :是任意有效的字符 类 型的 变 量,此变 量必 须 是 char(或 nchar)或 varchar(或nvarchar)型的 变 量。 字符串表 达 式 :返回字符串的表 达 式。可包含串 联的字面 值 和 变 量。消息字符串最多可有 8000个 字符,超 过 8000个 字 节 的任何字符均被截 断 。12.1.2 流程控制 语 句 用于控制程序的流程,一般分 为 三 类 : 顺 序 分支 循 环 SQL Server 2005也提供 对这 三 种 流程控制的支持。T-SQL提供的主要流程控制 语 句语 句 描 述BEGIN END 定义语句块BREAK 退出最内层的 WHILE 循环CONTINUE 重新开始 WHILE 循环GOTO 标签 从 标签 所定义的 标签 之后的语句处继续进行处理IF ELSE 如果指定条件为真,执行一个分支,否则执行另一个分支RETURN 无条件退出WHILE 当指定条件为真时重复一些语句