变量-自定义函数.doc
文本预览下载声明
5.1.3 变量
1. 变量
变量名必须是一个合法的标识符。
1)标识符
(1) 常规标识符
以ASCII字母、Unicode字母、下划线 (_)、@或#开头,后续可跟一个或若干个ASCII字符、Unicode字符、下划线 (_)、美元符号($)、@或#,但不能全为下划线(_)、@或#。
(2) 分隔标识符
包含在双引号 () 或者方括号 ([ ]) 内的常规标识符或不符合常规标识符规则的标识符。
2)变量的分类
(1) 全局变量
全局变量由系统提供且预先声明,通过在名称前加两个“@”符号区别于局部变量。
(2) 局部变量
局部变量用于保存单个数据值。例如,保存运算的中间结果,作为循环变量等。
3. 局部变量的使用
1) 局部变量的定义与赋值
(1) 局部变量的定义
在批处理或过程中用 DECLARE 语句声明局部变量,所有局部变量在声明后均初始化为NULL。
语法格式:
DECLARE ????{ @local_variable data_type }??[ ,...n]
用SET语句赋值
将DECLARE语句创建的局部变量设置为给定表达式的值。
语法格式:
SET @local_variable=expression
【例5.1】创建局部变量@var1、@var2,并赋值,然后输出变量的值。
DECLARE @var1,@var2 char(20)
SET @var1=’中国’ /*一个SET语句只能给一个变量赋值*/
SET @var2=@var1+’是一个伟大的国家’
SELECT @var1,@var2 Go
【例5.2】创建一个名为sex的局部变量,并在 SELECT 语句中使用该局部变量查找表XS中所有女同学的学号、姓名。
USE XSCJ
DECLARE @sex bit
SET @sex=0
SELECT 学号,姓名
FROM XS
WHERE 性别=@sex GO
【例5.3】使用查询给变量赋值。
USE XSCJ
DECLARE @student char(8)
SET @student=(SELECT 姓名 FROM XS) GO
用SELECT语句赋值
语法格式:
SELECT {@local_variable=expression} [,…n]
【例5.4】在 XS 表中不存在身份证号码ID_number 字段,因此对该表的查询不返回结果,变量@var1将保留原值。
USE XSCJ
DECLARE @var1 nvarchar(30)
SELECT @var1 = ‘刘丰’
SELECT @var1 = 姓名
FROM XS
WHERE ID_number = 64122312111
SELECT @var1 AS NAME
【例5.5】例中子查询用于给 @var1 赋值。在 XS 表中ID_number不存在,因此子查询不返回值并将变量@var1设为 NULL。
USE XSCJ
DECLARE @var1 nvarchar(30)
SELECT @var1 = ‘刘丰’
SELECT @var1 =
(SELECT姓名
FROM XS
WHERE ID_number = 64122312111)
SELECT @var1 AS NAME
2)局部游标变量的定义与赋值
(1) 局部游标变量的定义
语法格式:
DECLARE
{ @cursor_variable_name CURSOR }
[ ,...n]
(2) 局部游标变量的赋值
将一个已存在的并且赋值的游标变量的值赋给另一局部游标变量;
将一个已申明的游标名赋给指定的局部游标变量;
申明一个游标,同时将其赋给指定的局部游标变量。
(3) 游标变量的使用步骤
定义游标变量?给游标变量赋值?打开游标?利用游标读取行(记录)?使用结束后关闭游标?删除游标的引用。
【例5.6】使用游标变量
USE XSCJ
DECLARE @CursorVar CURSOR /*定义游标变量*/
SET @CursorVar = CURSOR SCROLL DYNAMIC /*给游标变量赋值*/
FOR
SELECT 学号, 姓名
FROM XS
WHERE 姓名 LIKE 王%
OPEN @CursorVar /*打开游标*/
FETCH NEXT FROM @CursorVar
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM @CursorVar
显示全部