SQL批处理

Posted on 2012-11-19 15:26  Name of gold  阅读(507)  评论(0编辑  收藏  举报

(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'