sqlserver 脚本和批处理指令小结

来源:asp之家 时间:2012-05-22 18:56:55 

一.脚本基础
1.USE语句
设置当前数据库。
2.声明变量
语法:DECLARE @变量名 变量类型
在声明变量后,给变量赋值之前,变量的值为NULL。
将系统函数赋给声明的变量,这个方法可以使我们能更安全地使用值,该值只有人为地改变时它才变动。如果直接使用系统函数本身,那么当它发生变动时,有
时会无法确定其究竟为何,因为大多数系统函数值是由系统确定的。这容易在你不预期的情况下导致系统改变了值,引起不可预期的后果。
(1).给变量赋值
SET:当进行变量赋值是,该值已经知道是确切值或者是其他变量时,使用SET。
SELECT:当变量赋值基于一个查询时,使用SELECT。
(2).系统函数
SQL Server 2005中有30多个无参的系统函数,其中一些最重要的如下:
@@ERROR: 返回当前连接下,最后执行的T-SQL语句的错误代码,如无错误返回0。
@@FETCH_STATUS: 和FETCH语句配合使用。
@@IDENTITY: 返回最后一句运行语句的、自动生成的标识值,作为最后INSERT或者SELECT INTO语句的结果。
@@ROWCOUNT: 返回最后一个语句影响的行数。
@@SERVERNAME: 返回脚本正在其上运行的本地服务的名字。
@@TRANCOUNT: 返回活动事务的数量,特别是针对当前连接的事务的瓶颈程度。

二.批处理
(1).GO单独占一行。在同一行上,T-SQL语句不能在GO语句之前。
(2).所有语句从脚本开始处或者上一个GO语句开始编译,直到下一个GO语句或者脚本结束,将这段代码编译到一个执行计划中并相互独立地送往服务器。前一
个执行计划中发生错误,不会影响后一个执行计划。
(3).GO不是一个T-SQL命令,只是被编辑工具识别的命令。当编辑工具碰到GO,它把GO看做一个结束批处理的标记,将其打包,然后作为一个独立单元发送到
服务器——不包括GO,服务器对于GO没有任何概念。
1.批处理中的错误
语法错误,运行时错误。
2.何时使用批处理
(1).独自成批处理的语句
有几个命令必须独自成批处理,它们包括:
CREATE DEFAULT
CREATE PROCEDURE
CREATE RULE
CREATE TRIGGER
CREATE VIEW
如果想将这些语句中的任何一条和其他语句组成单独的一个脚本,那么需要采用一个GO语句将它们分别断开,归入各自的批处理中。
(2).使用批处理建立优先级
使用批处理最可靠的例子是,当需要考虑语句执行的优先顺序时,也就是说,需要一个任务在另一个任务开始前执行。
例如:
CREATE DATABASE Test

代码如下:


CREATE TABLE TestTable
(
col1 INT,
col2 INT
)


执行语句,会发现生成的表没有在Test数据库中,而是在master数据库中(如果当前使用的数据库是系统数据库)。因为在执行脚本的时候,使用的数据
库是系统数据库,该数据库是当前的,所以生成的表在系统数据库中。看起来,应该在创建表之前指定数据库Test。然而,这样仍然存在问题。解析器试图校
验代码,发现我们用USE命令引用的数据库并不存在。原因在于创建数据库的语句和创建表的语句写在一个批处理中,在执行该脚本之前,当然数据库还没有
创建。根据批处理的要求,我们将创建数据库和创建表的脚本用GO语句分为两个独立的批处理。正确代码如下:

代码如下:


CREATE DATABASE Test
GO

USE Test
CREATE TABLE TestTable
(
col1 INT,
col2 INT
)

标签:脚本,批处理
0
投稿

猜你喜欢

  • 对DataFrame数据中的重复行,利用groupby累加合并的方法详解

    2023-09-06 03:01:19
  • Golang算法问题之整数拆分实现方法分析

    2023-07-01 00:39:36
  • http状态码一览表以及HTTP响应的返回头信息

    2010-03-31 14:45:00
  • Python多线程编程(三):threading.Thread类的重要函数和方法

    2021-04-22 09:02:47
  • 解决运行出现'dict' object has no attribute 'has_key'问题

    2021-06-14 06:58:48
  • mysql 如何插入随机字符串数据的实现方法

    2024-01-19 11:43:02
  • 数据库新手入门之MYSQL出错代码列表

    2008-12-23 15:22:00
  • MySQL Packet for query is too large 问题及解决方法

    2024-01-29 07:55:52
  • 常用SQL语句查询分享

    2024-01-12 16:13:11
  • python借助ChatGPT读取.env实现文件配置隔离保障私有数据安全

    2022-12-26 17:54:13
  • 将python安装信息加入注册表的示例

    2023-02-24 18:15:11
  • Python连接Hadoop数据中遇到的各种坑(汇总)

    2023-09-13 20:16:34
  • 概念性产品设计

    2008-06-11 12:57:00
  • jQuery.animate简单分析

    2010-06-26 12:45:00
  • python3 pillow模块实现简单验证码

    2021-07-04 11:10:44
  • PHP利用func_get_args和func_num_args函数实现函数重载实例

    2023-06-15 09:25:51
  • MySQL优化教程之慢查询日志实践

    2024-01-24 11:22:57
  • vue中v-model指令与.sync修饰符的区别详解

    2024-05-28 15:46:10
  • 防止Access 2000密码被破译的方法

    2008-11-20 16:48:00
  • Python中的流程控制详解

    2023-07-22 20:31:54
  • asp之家 网络编程 m.aspxhome.com