批處理是一個邏輯單元的一組T-sql語句。
為了將一個腳本分為多個批處理,可以使用GO語句。
1. GO語句必須自成一行。
2. GO語句使得每個批處理是單獨發送到服務器的,與其他的批處理器無關。(這裡面的執行方案很可能是並發的,所以在很多的情況下,可能需要考慮順序問題)
3. GO語句不是T-sql命令,而是由各種SQLServer命令適用成型的識別命令。
批處理中的錯誤:
1. 語法錯誤,在執行之前就會被檢測。
2. 運行時錯誤,只能在運行之後(或者之中)被檢測到,一般是違反了完整性等錯誤。
要求有自己批處理的語句:
1. Create Default
2. Create Procedure
3. Create Rule
4. Create Trigger
5. Create View
注:如果想在單獨的腳本中將這些語句組合,則需要通過使用GO語句來將它們分散到各自的批處理中。
EXEC的陷阱:
1. Exec和調用它的代碼都在單獨的作用域下運行——也就是說,調用代碼不能引用EXEC語句中的變量,並且在調用代碼中的變量被解析為用於EXEC語句的字符串之後,EXEC不能引用這些變量。如果需要在動態SQL和調用它的例程間傳遞值,考慮使用SQL-executeSQL。
2. 默認情況下,EXEC在當前用戶的安全上下文下運行——而不是調用對象的安全上下文。(對象經常在對象所有者的上下文運行,而不是當前用戶)
3. EXEC與調用對象運行在相同的連接和事務環境下。
4. 對EXEC字符串執行的要求函數調用的串聯必須先於實際調用的EXEC的語句——不能在執行EXEC調用的相同語句中執行函數串聯。
5. EXEC不能再用戶自定義函數內使用。