T-SQL: GO e i commenti
Posted
lunedì 5 marzo 2007 20.12
by
francesco
Non passa corso di "SQL Server 2000 Programming" che non faccio notare ai
partecipanti il brutto scherzo in cui si può incorrere col
Query Analyzer, commentando un frammento di uno script che includa il comando GO. Invece, il tool di amministrazione/sviluppo
"Sql Server Management Studio (SSMS)" (introdotto con Sql
Server 2005) evita lo spiacevole errore ignorando il GO incluso nella sezione
commentata.
Vediamo un esempio:
01
USE tempdb
02 GO
03
04
DROP TABLE T1
05
06
CREATE TABLE T1 (
07 C1
INT,
08 C2
VARCHAR(10)
09
)
10 GO
11
12
INSERT T1
VALUES (1, 'uno')
13
/*
14 INSERT T1 VALUES (2, 'due')
15 GO
16
17 INSERT T1 VALUES (3, 'tre')
18 */
19
20
SELECT * FROM T1
21 GO
Il messaggio restituito da Query Analyzer è un tantino ambiguo, ma allusivo
quanto basta per intuirne il motivo:
Server: messaggio 113, livello 15, stato 1, riga 3
Carattere di fine
commento '*/' mancante.
Server: messaggio 170, livello 15, stato 1, riga
1
Riga 1: sintassi non corretta in prossimità di '*'.
Di fatto, il GO non è un comando SQL, bensì del client, e determina l'invio del batch che comprende le istruzioni
dalla riga 11 alla 14. Ecco dunque spiegato il messaggio di errore che denuncia
la mancanza del carattere di fine commento '*/'.
Insomma, un'altro buon motivo per mettere in cantina il vecchio Query
Analyzer.
Se eseguiamo lo script di sopra con il SSMS, otteniamo la risposta
attesa:
(Righe interessate:
1)
C1 C2
-----------
----------
1
uno
(Righe interessate: 1)