O SQL Server Management Studio sempre insere um comando GO quando eu crio uma consulta usando o botão direito do mouse no menu "Script Como". Por quê? O que o GO realmente faz?
O SQL Server Management Studio sempre insere um comando GO quando eu crio uma consulta usando o botão direito do mouse no menu "Script Como". Por quê? O que o GO realmente faz?
Respostas:
É um terminador de lote, mas você pode alterá-lo para o que quiser
O comando GO não é uma instrução Transact-SQL, mas um comando especial reconhecido por vários utilitários da MS, incluindo o editor de código do SQL Server Management Studio.
O comando GO é usado para agrupar comandos SQL em lotes que são enviados ao servidor juntos. Os comandos incluídos no lote, ou seja, o conjunto de comandos desde o último comando GO ou o início da sessão, devem ser logicamente consistentes. Por exemplo, você não pode definir uma variável em um lote e usá-la em outro, pois o escopo da variável é limitado ao lote em que está definido.
Para mais informações, consulte http://msdn.microsoft.com/en-us/library/ms188037.aspx .
GO
realmente úteis?
GO não é uma palavra-chave SQL.
É um separador de lotes usado pelas ferramentas do cliente (como SSMS) para dividir o script inteiro em lotes
Respondido antes várias vezes ... exemplo 1
Apenas para adicionar às respostas existentes, ao criar visualizações, você deve separar esses comandos em lotes usando go
, caso contrário, você receberá o erro 'CREATE VIEW' must be the only statement in the batch
. Portanto, por exemplo, você não poderá executar o seguinte script sql semgo
create view MyView1 as
select Id,Name from table1
go
create view MyView2 as
select Id,Name from table1
go
select * from MyView1
select * from MyView2
Go significa que quaisquer instruções SQL escritas antes e depois de qualquer GO anterior serão enviadas ao SQL Server para processamento.
Select * from employees;
GO -- GO 1
update employees set empID=21 where empCode=123;
GO -- GO 2
No exemplo acima, as instruções antes do GO 1 irão para o sql sever em um lote e, em seguida, quaisquer outras instruções antes do GO 2 irão para o sql server em outro lote. Então, como vemos, ele separou lotes.
Aqui está a mágica do GO.
SELECT 'Go'
Go 10
Sintaxe: INT(BatchNumber)
BatchNumber: nenhum dos momentos ocorreu
Parece simples, pode levar você ao Spaghetti se você codificar mais profundamente.