2011-11-14 12 views
5

Perché dovrei usare GO scrivendo sql per sybase? Nella maggior parte degli sql esistenti che il mio progetto ha, non ci sono GO ma quando DDL viene generato per la creazione di tabelle, ad esempio, l'applicazione inserisce molte istruzioni GO.Perché dovrei usare il comando GO in sybase?

Grazie alle risposte, capisco che GO è simile a ; in altri database, come le persone hanno sottolineato utile è un delimitatore.

Una domanda aggiuntiva, quindi, è GO in sybase esattamente equivalente a digitare ; in Oracle?

+0

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

+0

Consideralo come lo stesso 'run' in un vecchio programma BASIC. –

+1

È una sostituzione non standard per il delimitatore di istruzioni standard ';' –

risposta

9

È un separatore di lotti. GO viene utilizzato per indicare al motore di elaborare tutto dopo la parola GO come un nuovo comando in un batch.

CREATE PROC usp_blah as ... 
GO 

CREATE some-otherproc as ... 
GO 

Senza GO, l'ottimizzatore getterebbe un errore al secondo CREATE dichiarazione

1

GO è un delimitatore SQL

Ogni caso di [gG] [oO] nel testo di un comando di lavoro è visto come il delimitatore del lotto go.

3

Confronta:

Do something 
    GO 
    Do something else 
    Go 

A:

Do something 
    Do something else 

Se si verifica un errore durante la 'Fai qualcosa' nel primo esempio poi 'Fare qualcosa di diverso' sarà ancora eseguito. Questo non è il caso nel secondo esempio. E come ha sottolineato Stuart, ci sono alcune azioni che richiedono di essere la prima dichiarazione di un batch, il che significa che devi mettere GO prima di loro a meno che non siano la prima riga del tuo file.

1

Il cosiddetto delimitatore go non è parte della sintassi del linguaggio SAP/Sybase Transact-SQL.

È comunemente considerato come un delimitatore batch per separare un gruppo di istruzioni T-SQL dal successivo.

Poiché tutti gli script batch SAP/Sybase vengono eseguiti utilizzando il client della riga di comando isql nativo, go viene interpretato dal client isql come un segnale per inviare tutti i comandi T-SQL immessi nel suo buffer fino al server ASE su la connessione di rete utente Server-Client (go non appare nella traccia di rete, non viene inviata al server).

Per inciso, isql riconoscerebbe solo andare in minuscolo e non preceduto da spazi bianchi.