1 --==============================T-SQL程序===============================
2 --GO
3 --会将两个GO之间的语句传递给SQL Server编译并运行,含有多个GO的就会分多次传递语句
4 --GO n 代表循环执行n次
5 PRINT 'aaa'
6 GO 10
7
8 --类型转换
9 --CAST:CAST(值 AS 类型)
10 PRINT CAST(10 AS varchar(10)) + '元'
11 --CONVERT:CONVERT(类型,值)
12 PRINT CONVERT(varchar(10),10) + '元'
13
14 --字符串常量
15 --使用2个单引号来输出单引号
16 PRINT 'He said:''Hello!'''
17
18 --quotename函数
19 --输出带左右符号的字符串,省去了自己拼凑的麻烦和不易读
20 --默认符号是[]
21 PRINT quotename('ID') --输出:[ID]
22 PRINT quotename('ID','''') --输出:'ID'
23
24 --查询对象ID
25 SELECT DB_ID('中文示例数据库')
26 SELECT OBJECT_ID(N'[dbo].[产品]')
27
28 --常用的全局变量
29 --@@ROWCOUNT 返回受上一语句影响的行数
30 SELECT * FROM 订单
31 PRINT '影响的记录条数:'+CONVERT(varchar(100),@@ROWCOUNT)
32 --@@IDENTITY 返回上次插入的标识值
33 INSERT INTO tbl2(Name) VALUES(111)
34 GO
35 PRINT '上次插入的标识值为:'+CONVERT(varchar(100),@@IDENTITY)
36 --@@ERROR返回执行的上一个T-SQL语句的错误号
37 INSERT INTO tbl2(Name) VALUES(111)
38 GO
39 PRINT '上次执行语句的错误号为:'+CONVERT(varchar(100),@@ERROR) --错误号0代表无错误
40 INSERT INTO tbl2(Name) VALUES('a')
41 GO
42 PRINT '上次执行语句的错误号为:'+CONVERT(varchar(100),@@ERROR)
43 --根据错误号查询详细信息
44 SELECT * FROM sys.sysmessages
45
46 --CASE语句
47 --格式1:CASE 字段1 WHEN 1 THEN 1 WHEN 2 THEN 2 ... ELSE 10 END
48 DECLARE @i int
49 SET @i = 1
50 PRINT CASE @i
51 WHEN 1 THEN 111
52 WHEN 2 THEN 222
53 ELSE 333
54 END --END不能少!
55 --格式2:CASE WHEN 表达式1 THEN 1 WHEN 表达式2 THEN 2 ... ELSE 10 END
56 DECLARE @i int
57 SET @i = 3
58 PRINT CASE WHEN @i < 2 THEN '小于2'
59 WHEN @i > 2 AND @i < 5 THEN '小于5'
60 ELSE '大于5'
61 END
62
63 --GOTO语句
64 DECLARE @num int
65 SET @num = 1
66 IF(@num < 0)
67 GOTO Result1
68 ELSE
69 GOTO Result2
70
71 Result1:
72 PRINT 111
73 Result2:
74 PRINT 222
75
76 --TRY CATCH语句
77 BEGIN TRY
78 PRINT '输出:' + 1
79 END TRY
80 BEGIN CATCH
81 PRINT '出错!错误号:' + CONVERT(nvarchar(10),ERROR_NUMBER()) + ' 错误信息为:' + ERROR_MESSAGE()
82 END CATCH
83
84 --拼凑SQL
85 --例:将订单表中的1991年到1998年的订单数据分别存入“订单_年份”表中
86 DECLARE @sql varchar(1000)
87 DECLARE @year int
88 SET @year = 1991
89 WHILE @year <= 1998
90 BEGIN
91 SELECT @sql = 'SELECT * FROM 订单 WHERE YEAR(订购日期) =' + CONVERT(varchar(4),@year)
92 EXEC (@sql) --此处的括号一定不能少!
93 IF @@ROWCOUNT > 0 --如果有数据才存入
94 BEGIN
95 SELECT @sql =
96 'SELECT * INTO 订单_' + CONVERT(varchar(4),@year) + ' FROM 订单 WHERE YEAR(订购日期) =' + CONVERT(varchar(4),@year) --注意加空格!
97 PRINT @sql --用以检验拼凑出的sql是否正确
98 EXEC (@sql)
99 END
100 SELECT @year += 1 --@year = @year + 1
101 END