变量名是一个合法的标识符。T-SQL语言包括两种形式的变量:用户自己定义的局部变量和系统提供的全局变量。
常规标识符
以ASCII字母、Unicode字母、下划线(_)、@或#开头,后续可跟一个或若干个ASCII字符、Unicode字符、下划线(_)、美元符号($)、@或#,但不能全为下划线(_)、@或#。
分隔标识符
包含在双引号(”)或者方括号([ ])内的常规标识符或不符合常规标识符规则的标识符。
局部变量
局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限在程序内部。局部变量是用于保存特定类型的单个数据值的变量。在T-SQL语言中,局部变量必须先定义然后再使用。
- 局部变量声明
在T-SQL语言中,用户可以使用declare语句声明变量,包含局部变量。在声明变量时需要注意如下两个方面:
为变量指定名称,且名称的第一个字符必须是@。
指定该变量的数据类型和长度。
默认情况下将该变量值设置为null。
用户还可以在一个declare语句中声明多个变量,多个变量之间使用逗号隔开。
语法格式如下:
Declare {@local_variable data_type} [,...n]
- @local_variable指定局部变量的名称。
- Data_type设置局部变量的数据类型及大小。局部变量可以为除text、ntext、
- image类型以外的任何数据类型。
- 所有局部变量在声明后均初始化为null,可以使用select或set设定的相应的值。
- 局部变量赋值
使用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。
全局变量注意事项:
- 全局变量不是由用户的程序定义的,而是在服务器级定义的。
- 用户只能使用预先定义的全局变量。
- 引用全局变量时,必须以标记符“@@”开头。
- 局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。
常用的全局变量
SQL Server支持的全局变量主要包括以下几个:
- @@CONNECTIONS:返回自最近一次启动SQL Server以来连接或视图连接的次数。
- @@ERROR:返回最后执行SQL语句的错误代码。
- @@ROWCOUNT:返回上一次语句影响的数据行的行数。
- @@SERVERNAME:返回运行SQL Server的本地服务器的名称。
- @@VERSION:返回SQL Server当前安装的日期、版本和处理器类型。
- @@LANGUAGE:返回当前SQL Server服务器的语言。