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)

Filed under:

Comments

No Comments