T-SQL中的变量及T-SQL中的流程控制语句

T-SQL中的变量

T-SQL中的变量分为两种
①、以@开头命名的局部变量
局部变量的声明需要使用DECLARE语句

--声明一个局部变量
--使用SELECT语句
DECLARE @B INT
SELECT @B=1
PRINT @B

--使用SET语句
DECLARE @SONG CHAR(20)
SET @SONG='爱殇'
PRINT @SONG

--声明多个局部变量
DECLARE @A INT,@C CHAR(2),@D INT
SELECT @A=5,@C='男',@D=20
PRINT @A

②、以@@开头命名的全局变量
全局变量是SQL Server系统内部事先定义好的变量,不需要用户参与定义

--全局变量
--@@ERROR		返回执行上一条Transact-SQL语句所返回的错误代码。
INSERT INTO UserInfor
VALUES('易烊千玺','男')
PRINT @@ERROR

--@@IDENTITY	返回最近一次插入的identity列的数值,返回值是numeric。
PRINT @@IDENTITY

T-SQL中的流程控制语句

BEGIN…END语句
BEGIN和END语句必须成对使用,任何一条语句均不能单独使用。
BEGIN语句后为T-SQL语句块。
END语句行指示语句块结束。

--BEGIN...END语句		相当于一对{}
--将两个变量的值交换
DECLARE @N INT,@M INT,@L INT
SELECT @N=8,@M=1
BEGIN
	SELECT @L=@N,@N=@M,@M=@L			--交换N和M的值
END
PRINT @N
PRINT @M

IF判断

--IF判断
--判断是否为偶数
DECLARE @O INT
SELECT @O=120
IF @O%2=0
PRINT '@O是偶数'

IF…ELSE选择

--IF…ELSE选择
--判断两个数的大小
DECLARE @MAX INT,@MIN INT
SELECT @MAX=20,@MIN=10
IF @MAX>@MIN
PRINT '@MAX大于@MIN'
ELSE
PRINT '@MAX小于@MIN'

--输入一个坐标值,然后判断它在哪一个象限
DECLARE @X INT,@Y INT
SELECT @X=10,@Y=-5
IF @X>0
	IF @Y>0
		PRINT '位于第一象限'
	ELSE
		PRINT '位于第四象限'
ELSE
	IF @Y>0
		PRINT '位于第二象限'
	ELSE
		PRINT '位于第三象限'

CASE语句

--CASE语句
USE User0221
SELECT AGES=										--在AGES字段下存放CASE的返回值
	CASE
		WHEN AGE<20 THEN '0'						--当AGE<20时返回0
		WHEN AGE>=20 AND AGE<30 THEN '1'			--当AGE>=20 并且 AGE<30时返回0
		ELSE '2'									--否则返回2
	END,
	CAST(NAME AS VARCHAR(10))AS 'USER_NAME'			--将NAME字段类型转换为10字节类型,并且命名字段为USER_NAME
FROM UserInfor										--搜索来自表UserInfor
ORDER BY ID											--通过ID进行排序
SELECT * FROM UserInfor		 

WHILE循环
在条件为真的情况下,WHILE子句可以循环地执行其后的一条T-SQL命令。如果想循环执行一组命令,则需要使用BEGIN…END子句。

--WHILE循环
--求1~20之间的和		210
DECLARE @A1 INT,@NUM1 INT
SELECT @A1=1,@NUM1=0
WHILE @A1<=20
BEGIN
	SELECT @NUM1=@NUM1+@A1,@A1=@A1+1
END
PRINT @NUM1

WHILE…CONTINUE…BREAK
CONTINUTE命令可以让程序跳过CONTINUE命令之后的语句,回到WHILE循环的第一行命令。
BREAK命令则让程序完全跳出循环,结束WHILE命令的执行。

--WHILE…CONTINUE…BREAK语句
--求1~20之间的偶数的和
DECLARE @O1 INT,@ONUM INT
SELECT @O1=1,@ONUM=0
WHILE @O1<=20
BEGIN
	SET @O1=@O1+1
	IF @O1%2=0
		SET @ONUM=@ONUM+@O1
	ELSE
		CONTINUE
	PRINT @O1
	PRINT '是偶数'
END
PRINT @ONUM

RETURN退出
RETURN语句用于从查询过程中无条件退出。RETURN语句可在任何时候用于从过程、批处理或语句块中退出。位于RETURN之后的语句不会被执行。

--RETURN退出
DECLARE @T INT
SET @T=10
IF @T>0
PRINT '遇到RETURN之前'
RETURN
PRINT '遇到RETURN之后'

GOTO跳转
GOTO命令用来改变程序执行的流程,使程序跳到标识符指定的程序行再继续往下执行
基本语法:GOTO 标识符:
标识符需要在其名称后加上一个冒号“:”。

--GOTO跳转
DECLARE @W INT
SET @W=1
TEN:
	PRINT @W
	SELECT @W=@W+1
WHILE @W<=10 GOTO TEN

WAITFOR挂起

WAITFOR指定触发器、存储过程或事务执行的时间、时间间隔或事件;还可以用来暂时停止程序的执行,直到所设定的等待时间已过才继续往下执行。
DELAY:用来设定等待的时间,最多可达24小时。
TIME:用来设定等待结束的时间点。

--WAITFOR挂起
--DELAY:用来设定等待的时间,最多可达24小时。
WAITFOR DELAY'00:00:05'
PRINT'北京时间12点整!'
--TIME:用来设定等待结束的时间点。
WAITFOR TIME'14:00:00'
PRINT'喜爱的歌曲:有时候'

你可能感兴趣的:(T-SQL中的变量及T-SQL中的流程控制语句)