tags:

views:

88

answers:

4

I'm new to TSQL and wondering what the GO statement really means. To me it just seems thrown in there where ever it seems to fit.

I guess it somehow tells sql server to run the previous statement? What happens if you don't use them at all? Could someone give an example where a statement will break if I don't use a GO.

Please elaborate.

+1  A: 

Check this out: GO on MSDN

daft
+4  A: 

It ends the batch.

It is rarely needed and is used far more often than it should be. One valid place is in stored porc programming where you first do a check if the proc exists and drop it if it doesn't. Then you use a go statment to end the batch because the create proc statment must be the first statmenet of a batch.

HLGEM
+5  A: 

It is a batch terminator

this will break

declare @i int
set @i =5

declare @i int
set @i =6

Select @i

Msg 134, Level 15, State 1, Line 5 The variable name '@i' has already been declared. Variable names must be unique within a query batch or stored procedure.

this will work

declare @i int
set @i =5

go
declare @i int
set @i =6

Select @i
SQLMenace
+3  A: 

By the way. It isn't actually a TSQL command. It is just used by Microsoft DB tools to separate two batches of commands.

In fact you can configure it to be a different word in SSMS if you want to under the Optionss..Batch separation preference setting.

The main place this distinction is important is that SQL Will choke on GO statement if you try to use them in queries through a database connection from code, for example through ADO.NET.

JohnFx