TransactSQL中可以使用两种变量一种是局部变量(Local Variable)另外一种是全局变量(Global Variable)
局部变量
局部变量是用户可自定义的变量它的作用范围仅在程序内部在程序中通常用来储存从表中查询到的数据或当作程序执行过程中暂存变量使用局部变量必须以@开头而且必须先用DECLARE命令说明后才可使用其说明形式如下
DECLARE @变量名 变量类型 [@变量名 变量类型…]
其中变量类型可以是SQL Server 支持的所有数据类型也可以是用户自定义的数据类型DECLARE命令的详细用法请参见其它命令
在TransactSQL中不能像在一般的程序语言中一样使用变量=变量值来给变量赋值必须使用SELECT或SET命令来设定变量的值其语法如下
SELECT@局部变量=变量值
SET @局部变量=变量值
例声明一个长度为 个字符的变量id并赋值
declare@id char()
select@id=
注意可以在Select命令查询数据时在Select命令中直接将列值赋给变量例:查询编号为的员工和工资将其分别赋予变量name和wage
例
use pangu
declare@name char()@wage money
select@name=e_name@wage=e_wage
from employee
where emp_id=
select@name as e_name@wage as e_wage
运行结果如下
e_name e_wage
张三
注意数据库语言和编程语言有一些关键字关键字是在某一一样下能够促使某一操作发生的字符组合为避免沖突和产生错误在命令表列变量以及其它对象时应避免使用关键字有关SQL Server的关键字请参见附录
全局变量
全局变量是SQL Server系统内部使用的变量其作用范围并不局限于某一程序而是任何程序均可随时调用全局变量通常存储一些SQL Server的配置设定值和效能统计数据用户可在程序中用全局变量来测试系统的设定值或TransactSQL命令执行后的状态值有关SQL Server 全局变量的详细情况请参见附录
注意全局变量不是由用户的程序定义的它们是在服务器级定应义的只能使用预先说明及定义的变局变量引用全局变量时必须以@@开头局部变量的名称不能与全局变量的名称相同否则会在应用中出错