Siempre me ha confundido cuándo debería usar la palabra clave GO después de los comandos y si se requiere un punto y coma al final de los comandos. ¿Cuáles son las diferencias y por qué / cuándo debería usarlas?
Cuando ejecuto el script Generate en SQL Server Management Studio, parece usar GO en todas partes, pero no el punto y coma.
sql
sql-server
Infierno
fuente
fuente
Respuestas:
GO
solo se relaciona con SSMS: no es Transact SQL real, solo le dice a SSMS que envíe las declaraciones SQL entre cada unaGO
en lotes individuales de forma secuencial.El
;
es un delimitador de sentencias SQL, pero en su mayor parte el motor puede interpretar en sus estados de cuenta se rompen.La principal excepción y el lugar donde
;
se usa con más frecuencia es antes de una declaración de expresión de tabla común.fuente
GO
not T-SQL mientras;
estáMERGE
declaración debe terminar con un punto y coma.;
esté desaprobado, NO usarlo está desaprobado, es decir, se convertirá en obligatorio según la fuente.La razón por la que ve tantos GO en los scripts DDL generados se debe a la siguiente regla sobre lotes.
Uno de los casos de uso de DDL generado es generar varios objetos en un solo archivo. Debido a esto, un generador de DDL debe poder generar lotes. Como han dicho otros, la declaración GO pone fin al lote.
fuente
VAMOS
Go es un separador de lotes. Esto significa que todo en ese lote es local para ese lote en particular.
Cualquier declaración de Variables, Variables de Tabla, etc. no cruza
GO
declaraciones.Las tablas #Temp son locales para una conexión, por lo que se extienden a través de declaraciones GO.
Punto y coma
Un punto y coma es un terminador de declaraciones. Esto se usa únicamente para identificar que una declaración en particular ha finalizado.
En la mayoría de los casos, la sintaxis de la declaración en sí es suficiente para determinar el final de una declaración.
Sin embargo, los CTE exigen que WITH sea la primera instrucción, por lo que necesita un punto y coma antes de WITH.
fuente
MERGE
declaración debe terminar con un punto y coma.Debe usar un punto y coma para terminar cada declaración SQL. Esto se define en los Estándares SQL,
Claro, la mayoría de las veces SQL Server le permite omitir el terminador de la declaración, pero ¿por qué tener malos hábitos?
Como han señalado otros, la declaración que precede a una expresión de tabla común (CTE) debe terminar con un punto y coma. Como consecuencia, de las personas que no han adoptado completamente el terminador de punto y coma, vemos esto:
que creo que se ve realmente extraño. Supongo que tiene sentido en un foro en línea cuando no se puede saber la calidad del código en el que se pegará.
Además, una
MERGE
declaración debe terminar con un punto y coma. ¿Ves un patrón aquí? Estas son algunas de las adiciones más recientes a TSQL que siguen de cerca los estándares SQL. Parece que el equipo de SQL Server va por el camino de exigir el uso del terminador de punto y coma.fuente
GO es un terminador de lotes, un punto y coma es un terminador de instrucciones.
utilizará GO cuando desee tener varias sentencias create proc en 1 script porque create proc debe ser la primera sentencia de un lote. Si usa expresiones de tabla comunes, la declaración anterior debe terminarse con un punto y coma
fuente
MERGE
declaración debe terminar con un punto y coma.