Level 10 变量和循环

1. 变量

1.1 变量是什么

变量是保存特定类型的单个值的对象,例如整数,日期或变化的字符串。通常在以下情况下使用变量:

  • 作为循环计数器来计算循环执行的次数。

  • 保持要通过控制流语句(如WHILE)进行测试的值。

  • 存储函数或存储过程返回的值。

此外,变量分为局部变量和全局变量

局部变量是用户可自定义的变量,它的作用范围仅在程序内部。局部变量的名称是用户自定义的,命名的局部变量名要符合SQL标识符命名规则,局部变量名必须以@开头。

而全局变量是系统预定义的,返回一些系统信息,全局变量以两个@开头即(@@)开头。

1.2 变量的使用

1.2.1 局部变量声明

要声明变量,请使用DECLARE语句。

语法

DECLARE { @LOCAL_VARIABLE_NAME DataType [ = value ] }

其中 LOCAL_VARIABLE_NAME 为局部变量的名称,DataType为数据类型。

例如,以下语句声明了一个名为@SEL_TYPE的变量,变量类型为char ,长度为2

DECLARE  @SEL_TYPE char(2)

1.2.2 局部变量赋值

语法

SET @variable_name=value

SELECT @variable_name=value

两者的区别:SET赋值语句一般用于赋给变量一个指定的常量,SELECT赋值语句一般用于从表中查询出数据然后赋给变量。

1.2.3 局部变量实例

声明局部变量count,并赋值123

DECLARE @count int
SET @count=123

声明局部变量retCount,从TableA中将Returned值为0的数据个数赋值给变量retCount

DECLARE @retCount int; //声明一个变量@retCount
SELECT @retCount = count(*) FROM TableA WHERE Returned = 0 
--将查询到的count值赋值给变量@retCount

1.2.4 全局变量的声明和实例

1.2.4.1 全局变量的声明

由于全局变量是系统定义的,比如SQL SERVER有如下全局变量

@@ERROR --最后一个T-SQL错误的错误号
@@IDENTITY --最后一次插入的标识值
@@LANGUAGE --当前使用的语言名称
@@MAX_CONNECTIONS --可以创建的同时连接的最大数目
@@SERVERNAME --本地服务器的名称
@@VERSION --SQL Server的版本信息
@@rowcount --主要是返回上次sql语句所影响的数据行数

1.2.4.2 全局变量实例

-- 在查询分析器中运行的结果如下:

insert into tb_Student01
values('小明','85')
select @@identity as ‘学生编号’

-- 结果: 学生编号
-- 1 1006

2. FOR循环

在SQL中,我们并没有FOR循环,但是我们可以使用WHILE循环模拟FOR循环从而实现功能

语法

DECLARE @cnt INT = 0;

WHILE @cnt < cnt_total
BEGIN
   {...statements...}
   SET @cnt = @cnt + 1;
END;

其中,cnt_total记录了你希望循环执行的总次数,变量cnt记录了当前步骤为循环从0开始的执行第几轮循环

2.1 FOR实例

DECLARE @cnt INT = 0;

WHILE @cnt < 10
BEGIN
   PRINT 'Inside simulated FOR LOOP on TechOnTheNet.com';
   SET @cnt = @cnt + 1;
END;

PRINT 'Done simulated FOR LOOP on TechOnTheNet.com';
GO

Last updated

Was this helpful?