批處理是一個(gè)邏輯單元的一組T-sql語(yǔ)句。
為了將一個(gè)腳本分為多個(gè)批處理,可以使用GO語(yǔ)句。
1. GO語(yǔ)句必須自成一行。
2. GO語(yǔ)句使得每個(gè)批處理是單獨(dú)發(fā)送到服務(wù)器的,與其他的批處理器無關(guān)。(這里面的執(zhí)行方案很可能是并發(fā)的,所以在很多的情況下,可能需要考慮順序問題)
3. GO語(yǔ)句不是T-sql命令,而是由各種SQLServer命令適用成型的識(shí)別命令。
批處理中的錯(cuò)誤:
1. 語(yǔ)法錯(cuò)誤,在執(zhí)行之前就會(huì)被檢測(cè)。
2. 運(yùn)行時(shí)錯(cuò)誤,只能在運(yùn)行之后(或者之中)被檢測(cè)到,一般是違反了完整性等錯(cuò)誤。
要求有自己批處理的語(yǔ)句:
1. Create Default
2. Create Procedure
3. Create Rule
4. Create Trigger
5. Create View
注:如果想在單獨(dú)的腳本中將這些語(yǔ)句組合,則需要通過使用GO語(yǔ)句來將它們分散到各自的批處理中。
EXEC的陷阱:
1. Exec和調(diào)用它的代碼都在單獨(dú)的作用域下運(yùn)行——也就是說,調(diào)用代碼不能引用EXEC語(yǔ)句中的變量,并且在調(diào)用代碼中的變量被解析為用于EXEC語(yǔ)句的字符串之后,EXEC不能引用這些變量。如果需要在動(dòng)態(tài)SQL和調(diào)用它的例程間傳遞值,考慮使用SQL-executeSQL。
2. 默認(rèn)情況下,EXEC在當(dāng)前用戶的安全上下文下運(yùn)行——而不是調(diào)用對(duì)象的安全上下文。(對(duì)象經(jīng)常在對(duì)象所有者的上下文運(yùn)行,而不是當(dāng)前用戶)
3. EXEC與調(diào)用對(duì)象運(yùn)行在相同的連接和事務(wù)環(huán)境下。
4. 對(duì)EXEC字符串執(zhí)行的要求函數(shù)調(diào)用的串聯(lián)必須先于實(shí)際調(diào)用的EXEC的語(yǔ)句——不能在執(zhí)行EXEC調(diào)用的相同語(yǔ)句中執(zhí)行函數(shù)串聯(lián)。
5. EXEC不能再用戶自定義函數(shù)內(nèi)使用。
更多信息請(qǐng)查看IT技術(shù)專欄