Especificar lotes

Los lotes se implementan como parte de las API de bases de datos.

  • En ADO, un lote es una cadena de instrucciones Transact-SQL incluida en la propiedad CommandText de un objeto 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
    
  • En OLE DB, un lote es una cadena de instrucciones Transact-SQL incluida en la cadena usada para establecer el texto del comando:

    WCHAR* wszSQLString =
    L"SELECT * FROM HumanResources.Employee; SELECT * FROM Production.Product";
    hr = pICommandText->SetCommandText
          (DBGUID_DBSQL, wszSQLString)
    
  • En ODBC, un lote es una cadena de instrucciones Transact-SQL incluida en una llamada a SQLPrepare o SQLExecDirect:

    SQLExecDirect(hstmt1,
       "SELECT * FROM HumanResources.Employee; SELECT * FROM Production.Product",
    SQL_NTS):
    

Algunas herramientas de acceso a datos, como Microsoft Access, no tienen un terminador explícito de lotes.

Comando GO

Microsoft SQL Server Management Studio, la herramienta sqlcmd y la herramienta osql utilizan el comando GO para señalar final de un lote. GO no es una instrucción Transact-SQL; simplemente indica a las herramientas el número de instrucciones SQL que se deben incluir en un lote. En SQL Server Management Studio y osql, todas las instrucciones Transact-SQL que se encuentran entre un comando GO y el siguiente se colocan en la cadena enviada a SQLExecDirect.

Por ejemplo, si las siguientes instrucciones se ejecutan en SQL Server Management Studio:

SELECT @@VERSION
SET NOCOUNT ON
GO

SQL Server Management Studio realiza el equivalente a:

SQLExecDirect(hstmt,
"SELECT @@VERSION SET NOCOUNT ON",
SQL_NTS);

Puesto que un lote se compila en un único plan de ejecución, debe ser completo lógicamente. El plan de ejecución creado para un lote no puede hacer referencia a ninguna de las variables declaradas en otro lote. Los comentarios deben iniciarse y finalizar en el mismo lote.