原創文章,轉載必需註明出處:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/sqlserver-codeblock/ 一、go語句 Go語句是SqlServer中用來表示當前代碼塊結束提交並確認結果的語句。 Go語句不能和其他Sql
原創文章,轉載必需註明出處:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/sqlserver-codeblock/
一、go語句
Go語句是SqlServer中用來表示當前代碼塊結束提交並確認結果的語句。
Go語句不能和其他Sql命令卸載同一行上!
定義的局部變數作用域局限在定義它的代碼快中,如:在go語句前定義的變數在go語句後面則不可用。
如果一次執行多個用go語句分開的代碼塊時,其中一個代碼塊出錯不會影響其他代碼塊的執行
二、Begin……End語句
T-Sql使用begin…end來指定代碼塊,但是在begin…end中聲明的變數在end結束之後還可以使用,直到遇見go語句
1 begin 2 declare @i int=0 3 select @i 4 end 5 select @i 6 go 7 select @i
三、If……eles語句
SQL中的If…else語句和其他編程語言中的語法一樣,Sql中的if…else可以不用添加括弧。另外SQL中還有if exists…else和if not exists…else的用法
1 declare @table table( Id int) 2 insert into @table values(1) 3 if( 1=1) 4 select * from @table 5 else 6 select 1 7 8 if exists( select * from @table) 9 begin 10 select * from @table 11 end 12 13 if not exists( select * from @table) 14 begin 15 select * from @table 16 end
四、Case…When…then…else…end語句
Case具有兩種格式,簡單Case函數和Case搜索函數。
1 --簡單Case函數 2 CASE sex 3 WHEN '1' THEN '男' 4 WHEN '2' THEN '女' 5 ELSE '其他' END 6 --Case搜索函數 7 CASE WHEN sex = '1' THEN '男' 8 WHEN sex = '2' THEN '女' 9 ELSE '其他' END
上面兩種格式可以實現相同的功能,但是簡單的case相對來說寫法比較方便,但是他的功能也就有些限制,如對sex寫判斷比較的時候就只能選擇case搜素函數方式。如下:
1 CASE WHEN sex > 1 THEN '男' 2 WHEN sex < 2 THEN '女' 3 ELSE '其他' END
五、While語句
While迴圈主要是根據while後邊的值來判斷迴圈語句是否繼續執行,如下:
1 declare @var_a int = 10 2 while( @var_a > 0) 3 begin 4 select @var_a 5 set @var_a=@var_a-1 6 end
While迴圈語句通常和游標(cursor)一塊使用如:
1 declare MyCursor cursor for select Name from #table --定義游標,游標數據集來源臨時表#table 2 open MyCursor --打開游標以供下麵代碼使用 3 fetch next from MyCursor into @name --將游標指向的值賦值給臨時變數@name,游標指向下一條數據 4 while @@FETCH_STATUS=0 --判斷游標是否到最後一條記錄 5 begin 6 select @name 7 fetch next from MyCursor into @name 8 end 9 close MyCursor --關閉游標 10 deallocate MyCursor -- 釋放最後的游標引用時