1、go語句sql
Go語句是SqlServer中用來表示當前代碼塊結束提交併確認結果的語句。編程
Go語句不能和其餘Sql命令卸載同一行上!編程語言
定義的局部變量做用域侷限在定義它的代碼快中,如:在go語句前定義的變量在go語句後面則不可用。函數
若是一次執行多個用go語句分開的代碼塊時,其中一個代碼塊出錯不會影響其餘代碼塊的執行sqlserver
2、Begin……End語句post
T-Sql使用begin…end來指定代碼塊,可是在begin…end中聲明的變量在end結束以後還可使用,直到碰見go語句fetch
1 begin 2 declare @i int=0 3 select @i 4 end 5 select @i 6 go 7 select @i
3、If……eles語句spa
SQL中的If…else語句和其餘編程語言中的語法同樣,Sql中的if…else能夠不用添加括號。另外SQL中還有if exists…else和if not exists…else的用法code
--建立臨時表@table
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
4、Case…When…then…else…end語句server
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
5、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 -- 釋放最後的遊標引用時