GOTO 可以直接跳转到制定的标签DECLARE @ID INT;SET @ID=10;IF(@ID=1)BEGIN GOTO myOk;ENDELSEBEGIN GOTO myError;ENDmyOk: PRINT 'OK';myError: PRINT 'Error';--=============================================================================================WAITFOR:1: WAITFOR DELAY '0:00:01';2: WAITFOR TIME '12:00:00';RETURN: Break the current batch and return value or nothingRAISEERROR: Throw an error and continue to execute the next statement;RAISERROR(N'error message',---message 10,--Severity, 1,--Error state 'Para1'--Parameter)--=============================================================================================全局变量(Global variable)使用@@作为前缀,由系统定义,在实例范围内可见,对用户只读局部变量(Local variable)使用@作为前缀,在定义局部变量的批处理中可见,由用户创建、赋值或修改。使用Declare来对局部变量声明,声明类型不能为Text/NText/Image类型,当声明为字符类型且没有指定长度时,默认长度为1;所有为赋值的局部变量默认值为null;可以使用SET和SELECT对局部变量赋值,在SELECT中对局部变量赋值时,如果SELECT查询结果为多行时,则使用最后一行的值对局部变量赋值。DECLARE @ID NVARCHAR(200)SELECT @ID=C1 FROM dbo.T1SELECT @IDDECLARE @ID NVARCHAR(200)SET @ID=(SELECT TOP(1)C1 FROM dbo.T1)SELECT @ID--=============================================================================================局部变量存在存在内存中(包括局部表变量)。局部表变量是一种特殊的局部变量,与临时表有本质区别,不能在局部表变量上添加索引。DECLARE @T TABLE( UserID INT IDENTITY(1,1) NOT NULL PRIMARY KEY, UserName NVARCHAR(20))INSERT INTO @T(UserName)SELECT 'U1'UNION ALLSELECT 'U2'SELECT * FROM @T--=============================================================================================集合操作集合合并:UNION/UNION ALL集合相交:INTERSECT集合相减:EXCEPT在集合操作中,NULL会被当做同一个值看待。--=============================================================================================