2011-11-14 26 views
5

¿Por qué debería usar GO al escribir sql para sybase? En la mayoría de los sql existentes que tiene mi proyecto, no hay GO, pero cuando se genera DDL para la creación de tablas, como ejemplo, la aplicación inserta muchas sentencias GO.¿Por qué debería usar el comando GO en sybase?

Gracias a las respuestas, entiendo que GO es similar a ; en otras bases de datos, ya que las personas han señalado amablemente que es un Delimitador.

Una pregunta adicional, ¿es GO en sybase exactamente equivalente a escribir ; en Oracle?

+0

http://tldp.org/HOWTO/Sybase-ASE-HOWTO/usage.html – Mob

+0

Piense en ello como lo mismo que 'ejecutar' en un antiguo programa BASIC. –

+1

Es un reemplazo no estándar para el delimitador de sentencia estándar ';' –

Respuesta

9

Es un separador de lotes. GO se usa para indicar al motor que procese todo después de la palabra GO como un nuevo comando en un lote.

CREATE PROC usp_blah as ... 
GO 

CREATE some-otherproc as ... 
GO 

Sin GO, el optimizador arrojaría un error en la segunda CREATE comunicado

1

GO es un delimitador de SQL

Cualquier ocurrencia de [gG] [oO] en el texto de una El comando de trabajo se ve como el delimitador de lote go.

3

Compare:

Do something 
    GO 
    Do something else 
    Go 

Para:

Do something 
    Do something else 

Si hay un error durante el 'hacer algo' en el primer ejemplo a continuación, 'Hacer otra cosa' seguirá funcionando. Este no es el caso en el segundo ejemplo. Y como Stuart señaló que hay algunas acciones que requieren ser la primera declaración de un lote, lo que significa que debe colocar GO antes que ellos a menos que sean la primera línea de su archivo.

1

El llamado delimiter go no forma parte de la sintaxis del lenguaje SAP/Sybase Transact-SQL.

Comúnmente se piensa en un delimitador de lotes para separar un montón de sentencias T-SQL de la siguiente. Dado que todos los scripts por lotes SAP/Sybase se ejecutan utilizando el cliente de línea de comandos isql nativo, el cliente isql lo interpreta como una señal para enviar todos los comandos T-SQL ingresados ​​en su búfer al servidor ASE durante la conexión de red del usuario Servidor-Cliente (ir no aparece en el rastreo de la red, no se envía al servidor).

Dicho sea de paso, isql solo reconocería ir en minúsculas solamente y no procederá con espacios en blanco.

Cuestiones relacionadas