首页 理论教育 SQLServer数据库基础教程:全局变量与局部变量

SQLServer数据库基础教程:全局变量与局部变量

时间:2026-01-26 理论教育 小龙哥 版权反馈
【摘要】:用户只能引用不能改写,且不能定义和全局变量同名的局部变量,引用时要在前面加上“@@”标记。图6-2 全局变量引用的结果2.局部变量局部变量是指在批处理或脚本中用来保存数据值的对象。也就是说,局部变量只能在声明它的批处理、存储过程或触发器中使用,一旦这些批处理或存储过程结束,局部变量将自动消除。

1.全局变量

全局变量是系统提供且预先声明的变量。全局变量在所有存储过程中随时有效,用户利用全局变量,可以访问服务器的相关信息或者有关操作的信息。用户只能引用不能改写,且不能定义和全局变量同名的局部变量,引用时要在前面加上“@@”标记。

在SQL Server 2005中,系统定义的全局变量有33个,表6-1列出部分常用全局变量。

表6-1 SQL Server中的部分全局变量

图示

【例6-3】 利用全局变量查看SQLServer的版本,当前所使用的SQLServer服务器名称和到当前时间为止试图登录的次数。

代码如下。

图示

运行结果如图6-2所示。

图示

图6-2 全局变量引用的结果

2.局部变量

局部变量是指在批处理或脚本中用来保存数据值的对象。局部变量常用于作为计数器计算循环执行的次数或控制循环执行的次数,也可以用于保存由存储过程代码返回的数据值。此外,还可以使用TABLE数据类型的局部变量来代替临时表。

(1)声明局部变量

使用一个局部变量之前,必须使用DECLARE语句来声明这个局部变量,给它指定一个变量名和数据类型,对于数值变量,还需要指定其精度和小数位数。DECLARE语句的语法格式如下。

图示

在上述数据参数中:

●@local_variable:是变量的名称。变量名必须以@符号开头,最多可以包含128个字符,局部变量名必须符合标识符规则。

●data_type:是任何由系统提供的或用户定义的数据类型。变量不能是text、ntext或image数据类型。

在一个DECLARE语句中可以定义多个局部变量,但需用逗号分隔开。

图示

【例6-4】 声明SNO、SNAME、SBIRTH、SCORE等局部变量。(https://www.xing528.com)

代码如下。

图示

某些数据类型需要指定长度,例如char类型等;某些数据类型不需要指定长度,例如datetime类型等;而某些数据类型还需要指定精度和小数位数,例如decimal类型等。

(2)给局部变量赋值

所有变量声明后,均被初始化为NULL。若要对变量赋值,可以使用SELECT语句或SET语句将一个不是NULL的值赋给已声明的变量。一个SELECT语句一次可以初始化多个局部变量;一个SET语句一次只能初始化一个局部变量。当用多个SET语句初始化多个变量时,为每个局部变量使用一个单独的SET语句。

1)用SELECT语句为局部变量赋初值的语法结构如下。

图示

如果使用SELECT语句对一个局部变量赋值时,这个语句返回了多个值,则这个局部变量将得到该SELECT语句所返回的最后一个值。此外,使用SELECT语句时,如果省略赋值号“=”及其后面的表达式,则可以将局部变量的值显示出来。例如,

图示

2)用SET语句为局部变量赋初值的语法结构如下。

图示

SET语句的功能是将表达式的值赋给局部变量。其中,表达式是SQL Server的任何有效的表达式。例如,

图示

(3)局部变量的作用域

局部变量的作用域指可以引用该变量的范围,局部变量的作用域从声明它的地方开始到声明它的批处理或存储过程结束。也就是说,局部变量只能在声明它的批处理、存储过程或触发器中使用,一旦这些批处理或存储过程结束,局部变量将自动消除。

【例6-5】 声明一个局部变量temp_zy,把"teaching"数据库中“专业”表中“专业号”为“12”的专业名赋给局部变量temp_zy,并输出。

代码如下。

图示

运行结果如图6-3所示。

图示

图6-3 局部变量的作用域

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈