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