GO (Transact-SQL)

Indica a las utilidades de SQL Server el final de un lote de instrucciones Transact-SQL.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

GO [count]

Argumentos

  • count
    Un entero positivo. El lote que precede a GO ejecuta el número de veces especificado.

Notas

GO no es una instrucción Transact-SQL, sino un comando reconocido por las utilidades sqlcmd y osql, así como por el Editor de código de SQL Server Management Studio.

Las utilidades de SQL Server interpretan GO como una señal de que deben enviar el lote actual de instrucciones Transact-SQL a una instancia de SQL Server. El lote actual de instrucciones está formado por todas las instrucciones especificadas desde el último comando GO o desde el comienzo de la sesión o secuencia de comandos ad hoc si se trata del primer comando GO.

Una instrucción Transact-SQL no puede ocupar la misma línea que un comando GO. Sin embargo, la línea sí puede contener comentarios.

Los usuarios deben seguir las reglas de los lotes. Por ejemplo, la ejecución de un procedimiento almacenado después de la primera instrucción de un lote debe incluir la palabra clave EXECUTE. El ámbito de las variables locales (definidas por el usuario) está limitado a un lote y no es posible referirse a ellas después del comando GO.

USE AdventureWorks;
GO
DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
GO -- @MyMsg is not valid after this GO ends the batch.

-- Yields an error because @MyMsg not declared in this batch.
PRINT @MyMsg
GO

SELECT @@VERSION;
-- Yields an error: Must be EXEC sp_who if not first statement in 
-- batch.
sp_who
GO

Las aplicaciones de SQL Server pueden enviar varias instrucciones Transact-SQL a una instancia de SQL Server para su ejecución como un lote. En ese momento, las instrucciones del lote se compilan en un único plan de ejecución. Los programadores que ejecutan instrucciones ad hoc en las utilidades de SQL Server o que generan secuencias de comandos de instrucciones Transact-SQL para ejecutarlas a través de las utilidades de SQL Server utilizan el comando GO para indicar el final de un lote.

Las aplicaciones basadas en las API de ODBC u OLE DB reciben un error de sintaxis al intentar ejecutar un comando GO. Las utilidades de SQL Server nunca envían un comando GO al servidor.

Permisos

GO es un comando de utilidad que no requiere permisos. Cualquier usuario puede ejecutarlo.

Ejemplos

En el siguiente ejemplo se crean dos lotes. El primer lote sólo contiene una instrucción USE``AdventureWorks para establecer el contexto de base de datos. Las instrucciones restantes utilizan una variable local. Por lo tanto, es necesario agrupar todas las declaraciones de variable locales en un único lote. Esto se logra al no usar el comando GO hasta después de la última instrucción que hace referencia a la variable.

USE AdventureWorks;
GO
DECLARE @NmbrContacts int
SELECT @NmbrContacts = COUNT(*)
FROM Person.Contact
PRINT 'The number of contacts as of ' +
      CAST(GETDATE() AS char(20)) + ' is ' +
      CAST(@NmbrContacts AS char (10))
GO

Vea también

Otros recursos

Lotes

Ayuda e información

Obtener ayuda sobre SQL Server 2005