和其他高級語言一樣,T-SQL中也有用於控制流程的語句。T-SQL中的流程控制語句進一步擴展了T-SQL的力量……使得大部分業務邏輯可以在數據庫層面進行。但很多人對T-SQL中的流程控制語句並沒有系統的了解,本篇文章會系統的對T-SQL語句中的流程控制語句進行系統講解。
在沒有流程控制語句的情況下,T-SQL語句是按照從上到下的順序逐個執行:
使用流程控制語句可以讓開發人員可以基於某些邏輯進行選擇性的跳轉,實現了類似高級語言的跳轉結構:
流程控制語句只能在單個批處理段(Batch),用戶自定義函數和存儲過程中使用。不能跨多個批處理段或者用戶自定義函數和存儲過程。
因為這裡重點講到T-SQL查詢語句,所以這裡只講批處理段(Batch).
一個批處理段是由一個或者多個語句組成的一個批處理,之所以叫批處理是因為所有語句一次性被提交到一個SQL實例。在這個批處理范圍內,局部變量是互相可見的。
而想讓多個語句分多次提交到SQL實例,則需要使用GO關鍵字。GO關鍵字本身並不是一個SQL語句,GO關鍵字可以看作是一個批處理結束的標識符,當遇到GO關鍵字時,當前GO之前的語句會作為一個批處理直接傳到SQL實例執行。所以不在同一個批處理內局部變量不可見,也不可對跨批處理的語句使用流程控制語句.
在同一個批處理中局部變量互相可見:
在不同批處理中局部變量不可見: