局 部 变 量
一、局部变量
局部变量一般出现在批处理、存储过程或触发器中。
●使用前必须用DECLARE语句定义。
●生存周期:仅生存于声明它的批处理、存储过程或触发器中,处理结束后,其中的信息将丢失。
●必须提供变量名和数据类型
●变量名前必须有个@符。变量名最长不超过30个字符。
●如需要声明多个局部变量,可只用一个DECLARE语句。变量间用“,”隔开。
●格式: DECLARE @变量名 数据类型[,···]
二、为局部变量赋初值
1、用SELECT语句
SELECT @变量名=表达式[,···]
[ FROM <表名> ]
[ WHERE <条件表达式> ]
●变量没赋值前为NULL值,如果在循环中使用它必须为其赋值。
●一条SELECT语句只能返回一行,如果返回多行只将最后一行的值赋给局部变量。
●由于使用不同的索引得到相同的结果,所以不好确定哪条记录是最后一条记录,这时可使用ORDER BY子句。
●若包含了FROM子句,可用以下两种方法保证SELECT语句返回一条记录。
1)在WHERE子句中使用关键码(主码)
2)SELECT 字段列表中使用一个集合函数。
例:赋值语句的各种表达形式
USE 教学库
网页点击特效>日语shiro是什么意思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
mysql语句的执行顺序>sqlite安卓版下载GO
2、用SET语句为变量赋值
将先前使用 DECLARE @local_variable 语句创建的指定局部变量设置为给定的值。
语法
SET @局部变量 = 表达式
| @游标变量 = @游标变量 | 游标名
参数
@局部变量
是除text、ntext 或 image 外的任何类型变量的名称。变量名必须以 at 符 (@) 开头。变量名必须符合标识符规则。表达式是任何有效的 Microsoft® SQL Server™ 表达式。
游标变量:
是游标变量的名称。如果目标游标变量先前引用了一个不同的游标,则删除先前的引用。
游标名:
使用 DECLARE CURSOR 语句声明的游标名。
指定 SET 语句包含游标声明。
注释:
声明变量后,所有变量均初始化为 NULL。使用 SET 语句将一个不是 NULL 的值赋给声明变量。SET 语句只能给一个变量赋值。当初始化多个变量时,为每个局部变量使用一个单独的 SET 语句。
变量只能用在表达式中,不能代替对象名或关键字。
权限
SET @局部变量 权限默认授予所有用户。
示例
A. 输出使用 SET 初始化的变量值
下例创建 @myvar 变量,将一个字符串值放在变量中,并输出 @myvar 变量的值。
DECLARE @myvar char(20)
SET @myvar = 'This is a test'
SELECT @myvarcolspan 中的列宽
GO
B. 在 SELECT 语句中使用由 SET 赋值的局部变量
下例创建一个名为 @xb 的局部变量,并在 SELECT 语句中使用该局部变量查男生的信息。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论