WEB开发网
开发学院数据库MSSQL Server 在SQL Server数据库中使用批处理的注意事项 阅读

在SQL Server数据库中使用批处理的注意事项

 2009-04-22 10:29:20 来源:WEB开发网   
核心提示: 三、批处理程序语句所处理对象不存在或不符合会如何处理?如现在某个批处理程序中有五条语句,其中第一条语句是创建表User,在SQL Server数据库中使用批处理的注意事项(3),第三条语句是往表User中插入数据(插入的数据与第一条语句中定义的数据类型不符合),当应用程序把这个批处理程序发

三、批处理程序语句所处理对象不存在或不符合会如何处理?

如现在某个批处理程序中有五条语句,其中第一条语句是创建表User,第三条语句是往表User中插入数据(插入的数据与第一条语句中定义的数据类型不符合)。当应用程序把这个批处理程序发给SQL Server数据库的时候,系统会对这个批处理对象进行编译。注意此时只是编译,而没有执行。编译只要语法没有错误即可。最后这个批处理程序会被编译成功,但是没有执行,即没有创建User表。编译完成后,这个批处理程序会运行。第一条语句编译后运行没有错误,但是运行到第二条语句的时候由于需要插入的数据跟第一条语句中所建立的数据库对象不符合,则第三条语句会编译失败。此时批处理终止。笔者举这个例子是为了说明2008数据库版本的一个改善,即对于批处理程序中的语句,数据库是编译一条,而执行一条。

假设这个批处理程序若放在2000版本的SQL Server数据库中,就会出现一个截然不同的结果。由于在2000版本中,对于批处理程序都是整篇编译的。此时在编译的时候就会发现这个对象不符的错误。具体哪一种处理机制好也是各人各有各的看法。笔者还是比较倾向于以前版本的处理方法,即整篇编译。这虽然可能会影响数据库的性能,但是影响不会很大;但是却可以提高批处理程序的正确性。或者说,由此带来的性能方面的损失,可能要比由此对来的对数据库数据的破坏性损失要小的多。不过在这方面各个数据库专家谁也说服不了谁。

四、批处理程序书写的一些限制要求。

由于批处理程序中往往需要完成一整套的功能。而且一旦批处理程序开始运行时,就会缺少用户的监督。或者说,互动性会比较差。为此如何保障批处理程序语句的有效性就显得尤其的重要。为此在书写批处理程序时,数据库设置了一些严格的规范。这些规范跟上面所提高的利用分号来分隔批处理程序语句不同。这里提到的规范具有强制性,即为反这个规则的话将会发生变异错误,批处理程序得不到执行。而上面提到的分号规则不具有强制性,其编辑时不会发生语法性错误,在没有其他错误的情况下可以正常执行这个批处理语句。

上一页  1 2 3 4  下一页

Tags:SQL Server 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接