局 部 变 量 一、 局部变量 局部变量一般出现在批处理、存储过程或触发器中。 使用前必须用DECLARE 语句定义。 生存周期:仅生存于声明它的批处理、存储过程或触发器中,处理结束后,其中的信息将丢失。 必须提供变量名和数据类型 变量名前必须有个@符。变量名最长不超过30 个字符。 如需要声明多个局部变量,可只用一个DECLARE 语句。变量间用“,”隔开。 格式: DECLARE @变量名 数据类型[,···] 二、为局部变量赋初值 1、 用SELECT 语句 SELECT @变量名=表达式[,···] [ FROM <表名> ] [ WHERE <条件表达式> ] 变量没赋值前为 NULL 值,如果在循环中使用它必须为其赋值。 一条 SELECT 语句只能返回一行,如果返回多行只将最后一行的值赋给局部变量。 由于使用不同的索引得到相同的结果,所以不好确定哪条记录是最后一条记录,这时可使用ORDER BY 子句。 若包含了 FROM 子句,可用以下两种方法保证 SELECT语句返回一条记录。 1) 在 WHERE 子句中使用关键码(主码) 2) SELECT 字段列表中使用一个集合函数。 例:赋值语句的各种表达形式 USE 教学库 GO SELECT * FROM STU DECLARE @PTR int , @sum int ,@xh char(4),@xm char(8), @TWO_XH CHAR(4),@TWO_XM CHAR(8) --------------------------- SELECT @SUM=10 --------------------------- SELECT @XH=学号,@XM=姓名 FROM STU ----------------------------- SELECT @TWO_XH=学号,@TWO_XM=姓名 FROM STU WHERE 姓名='林丽玲' SELECT @PTR,@SUM,@XH,@XM,@TWO_XH,@TWO_XM 例 2:使用集合函数为变量赋值。 USE 教学库 GO SELECT * FROM GRE DECLARE @CJ tinyint ----------------------------- SELECT @CJ=MAX(成绩) FROM gre SELECT @CJ GO 2、 用 SET 语句为变量赋值 将先前使用 DECLARE @local_variable 语句创建的指定局部变量设置为给定的值。 语法 SET @局部变量 = 表达式 | @游标变量 = @游标变量 | 游标名 参数 @局部变量 是除 text、ntext 或 image 外的任何类型变量的名称。变量名必须以 at 符 (@) 开头。变量名必须符合标识符规则。表达式是任何有效的 Microsoft® SQL Server™ 表达式。 游标变量: 是游标变量的名称。如果目标游标变量先前引用了一个不同的游标,则删除先前的...