A batch is a set of SQL statements submitted together and executed as a group. A script is often a series of batches submitted one after the other. A batch is compiled only once as a whole and is terminated by an end-of-batch signal. Because of this, certain restrictions on batch size exist.
You can submit one or more batches of SQL statements to isql from an operating-system file. A file can include more than one batch ¾ more than one collection of SQL statements¾each terminated by the GO end-of-batch signal.
For details, see Batches in the Microsoft SQL Server Transact-SQL Reference.
The following excerpt of INSTPUBS.SQL script, located in the SQL Server INSTALL directory, contains the following batches that help to create the pubs sample database (note that comments have been removed):
SET NOCOUNT ON
SET DATEFORMAT mdy
USE master
go
CREATE TABLE #dbdev_temp
(
name_var varchar(30) NOT NULL,
type varchar(10) NOT NULL
)
go
INSERT #dbdev_temp VALUES('pubs', 'dbname')
INSERT #dbdev_temp VALUES('master', 'devname')
go
DECLARE @dbname_var varchar(30)
SELECT @dbname_var = name_var FROM #dbdev_temp WHERE type = 'dbname'
IF EXISTS (SELECT * FROM master.dbo.sysdatabases
WHERE name = @dbname_var)
BEGIN
EXECUTE ('DROP DATABASE ' @dbname_var)
END
go
DECLARE @dbname_var varchar(30),
@devname_var varchar(30)
SELECT @dbname_var = name_var FROM #dbdev_temp WHERE type = 'dbname'
SELECT @devname_var = name_var FROM #dbdev_temp WHERE type = 'devname'
EXECUTE ('PRINT "Creating the publishers database as ' @dbname_var
' on the ' @devname_var ' device."')
EXECUTE ('CREATE DATABASE ' @dbname_var ' ON ' @devname_var ' = 3')
go
DECLARE @dbname_var varchar(30)
SELECT @dbname_var = name_var FROM #dbdev_temp WHERE type = 'dbname'
EXECUTE ('USE ' @dbname_var)
go
DECLARE @dbname_var varchar(30)
SELECT @dbname_var = name_var FROM #dbdev_temp WHERE type = 'dbname'
IF ((db_id() <> db_id(@dbname_var)) OR (db_id(@dbname_var) IS NULL) OR (db_id() = db_id('master')))
RAISERROR ('The publishers database was not created. See the Errorlog or
Event Viewer for more details.',20,0) WITH LOG
go
EXECUTE ('USE master')
DECLARE @dbname_var varchar(30)
SELECT @dbname_var = name_var FROM #dbdev_temp WHERE type = 'dbname'
EXECUTE ('sp_dboption ''' @dbname_var ''', ''trunc. log on chkpt.'', true')
EXECUTE ('USE ' @dbname_var)
go
EXECUTE sp_addtype id, 'varchar(11)', 'NOT NULL'
EXECUTE sp_addtype tid, 'varchar(6)', 'NOT NULL'
EXECUTE sp_addtype empid, 'char(9)', 'NOT NULL'
go
CREATE TABLE authors
(
au_id id
CHECK (au_id like '[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]')
CONSTRAINT UPKCL_auidind PRIMARY KEY CLUSTERED,
au_lname varchar(40) NOT NULL,
au_fname varchar(20) NOT NULL,
phone char(12) NOT NULL
DEFAULT ('UNKNOWN'),
address varchar(40) NULL,
city varchar(20) NULL,
state char(2) NULL,
zip char(5) NULL
CHECK (zip like '[0-9][0-9][0-9][0-9][0-9]'),
contract bit NOT NULL
)
go
.
.
.