变量名是一个合法的标识符。T-SQL语言包括两种形式的变量:用户自己定义的局部变量和系统提供的全局变量。

常规标识符

以ASCII字母、Unicode字母、下划线(_)、@或#开头,后续可跟一个或若干个ASCII字符、Unicode字符、下划线(_)、美元符号($)、@或#,但不能全为下划线(_)、@或#

 

分隔标识符

包含在双引号(”)或者方括号([ ])内的常规标识符或不符合常规标识符规则的标识符。

局部变量

局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限在程序内部。局部变量是用于保存特定类型的单个数据值的变量。在T-SQL语言中,局部变量必须先定义然后再使用。

  • 局部变量声明

在T-SQL语言中,用户可以使用declare语句声明变量,包含局部变量。在声明变量时需要注意如下两个方面:

为变量指定名称,且名称的第一个字符必须是@

指定该变量的数据类型和长度。

默认情况下将该变量值设置为null

用户还可以在一个declare语句中声明多个变量,多个变量之间使用逗号隔开。

语法格式如下:

Declare {@local_variable data_type} [,...n]

  1. @local_variable指定局部变量的名称。
  2. Data_type设置局部变量的数据类型及大小。局部变量可以为除textntext
  3. image类型以外的任何数据类型。
  4. 所有局部变量在声明后均初始化为null,可以使用selectset设定的相应的值。

 

  • 局部变量赋值

使用set语句为变量赋值和使用select语句选择列表当前所引用值来为变量赋值。语法格式如下:

set @local_variable = expression

select {@local_variable = expression}[,...n]

select 语句通常用于将单个值返回到变量中,若有多个值时,将返回的最后一个值赋给变量

若无返回行,则变量将保留当前值。

expression不返回值,则变量设为null

一个select语句可以初始化多个局部变量。

 

  • 变量显示

使用print语句为显示变量值,语法格式如下:

print @local_variable

此外,select语句也可用于局部变量的查看,格式如下:

select @local_variable

全局变量

全局变量由系统提供且预先声明,是SQL Server系统内部使用的变量,其作用范围并不仅限于某一程序,而是任何程序均可以随时调用,通常存储SQL Server的配置设定值和系统数据。

全局变量是由系统定义和维护的变量,是用于记录服务器活动状态的一组数据。全局变量名由@@符号开始。用户不能建立全局变量,也不可能使用set语句去修改全局变量的值。用户可以在程序中使用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。全局变量的查看语句同局部变量:select @@variable

 

全局变量注意事项:

  1. 全局变量不是由用户的程序定义的,而是在服务器级定义的。
  2. 用户只能使用预先定义的全局变量。
  3. 引用全局变量时,必须以标记符“@@”开头。
  4. 局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。

 

常用的全局变量

SQL Server支持的全局变量主要包括以下几个:

  1. @@CONNECTIONS:返回自最近一次启动SQL Server以来连接或视图连接的次数。
  2. @@ERROR:返回最后执行SQL语句的错误代码。
  3. @@ROWCOUNT:返回上一次语句影响的数据行的行数。
  4. @@SERVERNAME:返回运行SQL Server的本地服务器的名称。
  5. @@VERSION:返回SQL Server当前安装的日期、版本和处理器类型。
  6. @@LANGUAGE:返回当前SQL Server服务器的语言。