文档详情

变量-自定义函数.doc

发布:2017-08-30约7.59千字共6页下载文档
文本预览下载声明
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
显示全部
相似文档