(1)什么是批处理?
批处理就是T-SQL语句的集合的逻辑单元,它的所有语句被合并为一个执行计划.
个人理解:
批处理就是好像我们常见的函数一样,它包含若干条T-SQL语句且每个批处理是独立运行的, 执行时发生错误时,除了当前出现错误的批处理不执行外,其它照样执行.
(2)使用GO语句进行批处理划分
使用GO语句遵循规制
1.独立成行,易于代码的可读性(GO语句万万不能放到其中包含有SQL语句行的末尾,因为这会导致编译器曲解).
2.使得所有语句必须在脚本的开始或者上一个GO语句进行编译.
3.GO不是一条T-SQL语句.
(3)何时和什么语句需要用到批处理语句?
1.CREATE DEFAULT
2.CREATE FUNCTION
3.CREATE PROCEDURE
4.CREATE RULE
5.CREATE SCHEMA
6.CREATE TRIGGER
7.CREATE VIEW
要在一个脚本中将上述的这些语句与其它语句结合起来时,需要使用GO语句将他们分解成独立的批次.
例子:
create database data;
use data ;
create table tb(...);
这段脚本代码是不能通过执行的,而用GO语句将它进行批量化后就可以了
create database data;
go
use data ;
create table tb(...);
(4)SQLCMD介绍
SQLCMD允许在Windows命令窗口中通过命令提示符来运行脚本.这对于执行转换和维护脚本非常有好处,而且是一种捕捉文本文件的快捷方法.
它的语法对大小写很敏感.
(5)动态SQL:使用exec命令注意的问题
1.它运行在单独的作用域中而不是在调用它的代码内(调用代码不能引用exec语句里的变量,而exec不能引用调用代码中的变量)
2.在默认情况下,与当前用户在同一安全上下文中运行.
3.它运行在与调用对象一样的连接和事物上下文中
4.对于需要函数调用的串联而言,必须在实际调用exec语句之前,在exec字符串上予以执行.
5.用户自定义的函数内不能使用exec.
(6)CASE语句
1.case语句后面跟相关表达式
如:
case 表达式
when 值1 then 操作1
...
end
2.case语句后面不跟任何表达式,when语句后必须是bool值
如:
case
when bool1 then 操作1
....
else 另外操作
end
(7)SQL语句中的WHILE语句中的BREAK和 CONTINUE关键字与C语言定义一样.
(8)WAITFOR语句
本语句中最大延迟时间为24小时,不能指定其他日期类型.
例如:
WAITFOR DELAY '01:00'
WAITFOR TIME '05:30'