SqlCollections - T-SQL程序

  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
相關文章
相關標籤/搜索