SQL Server 2017从零开始学(视频教学版)
上QQ阅读APP看书,第一时间看更新

3.3.2 局部变量

局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。在批处理和脚本中变量可以有如下用途:作为计数器计算循环执行的次数或控制循环执行的次数,保存数据值供控制流语句测试以及保存由存储过程代码返回的数据值或者函数返回值。局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令声明后才可以使用。定义局部变量的语法形式如下:

     DECLARE {@local-variable data-type}  [...n]

参数@local-variable用于指定局部变量的名称,变量名必须以符号“@”开头,且必须符合SQL Server的命名规则。

参数data-type用于设置局部变量的数据类型及其大小。data-type可以是任何由系统提供的或用户定义的数据类型。但是,局部变量不能是text、ntext或image数据类型。

【例3.2】使用DECLARE语句创建int数据类型的名为@mycounter的局部变量,输入语句如下。

     DECLARE @MyCounter int;

若要声明多个局部变量,在定义的第一个局部变量后使用一个逗号,然后指定下一个局部变量名称和数据类型。

【例3.3】创建3个名为@Name、@Phone和@Address的局部变量,并将每个变量都初始化为NULL,输入语句如下。

     DECLARE @Name varchar(30), @Phone varchar(20), @Address char(2);

使用DECLARE命令声明并创建局部变量之后,会将其初始值设为NULL,如果想要设置局部变量的值,必须使用SELECT命令或者SET命令。其语法形式为:

     SET {@local-variable=expression}
     SELECT {@local-variable=expression } [, ...n]

其中,@local-variable是给其赋值并声明的局部变量。expression是任何有效的SQL Server表达式。

【例3.4】使用SELECT语句为@MyCount变量赋值,最后输出@MyCount变量的值,输入语句如下。

     DECLARE @MyCount INT
     SELECT @MyCount =100
     SELECT @MyCount
     GO

执行结果如图3-2所示。

图3-2 执行结果

【例3.5】通过查询语句给变量赋值,输入语句如下。

     DECLARE @rows int
     SET @rows=(SELECT COUNT(*) FROM Member)
     SELECT @rows
     GO

该语句查询出member表中总的记录数,并将其保存在rows局部变量中,如果表中没有数据记录,则返回结果为0,如图3-3所示。

图3-3 执行结果

【例3.6】在SELECT查询语句中,使用由SET赋值的局部变量,输入语句如下。

     USE test
     GO
     DECLARE @memberType varchar(100)
     SET @memberType ='VIP'
     SELECT RTRIM(FirstName)+' '+RTRIM(LastName) AS Name, @memberType
     FROM member
     GO