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
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'喜爱的歌曲:有时候'