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?