SqlServer之代碼塊相關

轉載必需註明出處:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/sqlserver-codeblock/

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 -- 釋放最後的遊標引用時
相關文章
相關標籤/搜索