Specifica di batch
I batch vengono implementati come parte delle API di database.
In ADO un batch corrisponde alla stringa di istruzioni Transact-SQL inclusa nella proprietà CommandText di un oggetto Command:
Dim Cmd As New ADODB.Command Set Cmd.ActiveConnection = Cn Cmd.CommandText = "SELECT * FROM Purchasing.Vendor; SELECT * FROM Production.Product" Cmd.CommandType = adCmdText Cmd.Execute
In OLE DB un batch corrisponde alla stringa di istruzioni Transact-SQL inclusa nella stringa utilizzata per l'impostazione del testo del comando:
WCHAR* wszSQLString = L"SELECT * FROM HumanResources.Employee; SELECT * FROM Production.Product"; hr = pICommandText->SetCommandText (DBGUID_DBSQL, wszSQLString)
In ODBC un batch corrisponde alla stringa di istruzioni Transact-SQL inclusa in una chiamata a SQLPrepare o SQLExecDirect:
SQLExecDirect(hstmt1, "SELECT * FROM HumanResources.Employee; SELECT * FROM Production.Product", SQL_NTS):
In alcuni strumenti di accesso ai dati, ad esempio Microsoft Access, non è disponibile un carattere esplicito di terminazione dei batch.
Comando GO
Microsoft SQL Server Management Studio, l'utilità sqlcmd e l'utilità osql utilizzano il comando GO per segnalare la fine di un batch. Tale comando non è un'istruzione Transact-SQL, ma indica semplicemente il numero di istruzioni SQL da includere in un batch. In SQL Server Management Studio e nell'utilità osql tutte le istruzioni Transact-SQL incluse tra un comando GO e il successivo vengono inserite nella stringa inviata a SQLExecDirect.
Ad esempio, se queste istruzioni vengono eseguite in SQL Server Management Studio:
SELECT @@VERSION
SET NOCOUNT ON
GO
SQL Server Management Studio esegue l'equivalente di:
SQLExecDirect(hstmt,
"SELECT @@VERSION SET NOCOUNT ON",
SQL_NTS);
Ogni batch, essendo compilato in un singolo piano di esecuzione, deve essere logicamente completo. Nel piano di esecuzione creato in base a un determinato batch non è possibile fare riferimento alle variabili dichiarate in un altro batch. I commenti inoltre devono essere contenuti completamente in un solo batch.