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