5.2.3 SQL变量
变量是指在程序运行过程中,其值可以发生变化的量,通常用来保存程序运行过程中的输入数据,计算获得的中间结果和最终结果。变量对于一种语言来说是必不可少的组成部分。Transact-SQL语言允许使用两种变量:一种是用户自己定义的局部变量(Local Variable),另一种是系统提供的全局变量(Global Variable)。
1.局部变量
局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可作为计数器来计算循环执行的次数,或控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。
和其他高级语言一样,要使用局部变量,必须在使用前用DECLARE语句定义,并且指定变量的数据类型,然后可以使用SET或SELECT语句为变量初始化;局部变量必须以@开头,而且必须先声明后使用。其声明格式如下。
DECLARE @变量名 变量类型[,@变量名 变 量类型…]
其中,变量类型可以是SQL Server 2000支持的所有数据类型,也可以是用户自定义的数据类型。
局部变量不能使用“变量=变量值”的格式进行初始化,必须使用SELECT或SET语句来设置其初始值。初始化格式如下。
SELECT @局部变量=变量值 SET @局部变量=变量值
例如,在student数据库中使用名为@find的局部变量查找所有以li开头的学生信息,代码如下。
USE student DECLARE @ find varchar(30) SET @ find = 'li%' SELECT Student_lname, Student_fname from authors WHERE Student_lname LIKE @li
执行结果如下。
Student_lname Student_fname ------------------------------------ -------------- lier Albert liger Anne
2.全局变量
全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或Transact-SQL命令执行后的状态值。引用全局变量时,全局变量的名字前面要有两个标记符@@。不能定义与全局变量同名的局部变量。从SQL Server 7.0开始,全局变量就以系统函数的形式使用。
指点迷津
①全局变量不是由用户的程序定义的,而是在服务器级定义的。
②用户只能使用预先定义的全局变量。
③引用全局变量时,必须以标记符@@开头。
④局部变量的名称不能与全局变量的名称相同。