批处理是一个逻辑单元的一组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不能再用户自定义函数内使用。
为了将一个脚本分为多个批处理,可以使用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不能再用户自定义函数内使用。
本文介绍了SQL Server中批处理的概念及其使用方法,包括如何利用GO语句划分批处理及常见的批处理创建语句。此外,还详细阐述了EXEC命令的特点和注意事项,帮助读者更好地理解和运用这些关键SQL元素。
719

被折叠的 条评论
为什么被折叠?



