GO ed escuzioni multiple della stessa istruzione

Published 19 settembre 07 02.43 | abenedetti

Il comando GO che utilizziamo per separare in batch le istruzioni TSQL può essere associato ad un valore numerico.
A cosa server tale valore?
A far eseguire N volte le istruzioni contenute nel batch.

Ovvero scrivendo un'istruzione come:

PRINT 'ciao'
GO 3

Otteniamo questo risultato:

Beginning execution loop
ciao
ciao
ciao
Batch execution completed 3 times.

La cosa si fa interessante in tutti quegli scenari in cui abbiamo la necessitĂ  di popolare alcune tabelle con dati di test o di prova.
Qualcose del genere:

USE tempdb
GO

CREATE TABLE test
(
idRecord SMALLINT,
dateInsert DATETIME DEFAULT (GETDATE()),
col VARCHAR(35)
)
GO

INSERT test (col) VALUES ('aaa bbb ccc')
GO 1000

SELECT COUNT(1) FROM test
GO

DROP TABLE test
GO

Il risultato:

Batch execution completed 1000 times.

-----------
1000

Filed under:

Comments

# locuratropical said on settembre 20, 2007 09.38 :

Ciao bello!

Solo per info aggiuntiva : )

Questo tipo di comportamento il comando GO lo ha solo su SQL2005.

Lo ho appena provato su 2000 e non va.

: )))

Ciao

Ale

print 'ciao'

GO 10

Server: messaggio 170, livello 15, stato 1, riga 2

Riga 2: sintassi non corretta in prossimità di 'go'.

# abenedetti said on settembre 20, 2007 10.12 :

Ciao Ale!

In realtà se usi SSMS su istanze SQL 2000 va, così come va utilizzando OSQL.

Con EM o Query Analyzer invece, come dici, no...

E' una funzionalità di tool... indipendente dall'engine

# dmauri said on settembre 20, 2007 10.39 :

Andrea, per favore, mi ri-scrivi questo articolo come "tips"  sul nuovo sito di UGISS? (www2.ugiss.org)....ed aggiungi anche i link a tuoi articoli su MSDN, thanks

# makka said on settembre 20, 2007 08.41 :

GO ed escuzioni multiple della stessa istruzione

# Esecuzione multipla di batch sql in Sql Server 2005 « Cosa importa se…. said on settembre 21, 2007 11.31 :

Pingback from  Esecuzione multipla di batch sql in Sql Server 2005 « Cosa importa se….

# makka said on ottobre 10, 2007 04.30 :

Segnalo questo post di Andrea che presenta un'interessante esempio di come sia possibile utilizzare