Qual é a utilização do GO no SQL Server Management Studio & Transact SQL?
o SQL Server Management Studio insere sempre um comando GO quando crio uma consulta com o menu "Script As" do botão direito. Por quê? O que vai realmente fazer?
8 answers
É um exterminador de lotes, você pode, no entanto, mudá - lo para o que quiser
Desde o Estúdio de gestão de 2005 parece que você pode usar GO
com um parâmetro int
, como:
INSERT INTO mytable DEFAULT VALUES
GO 10
O texto acima irá inserir 10 linhas em mytable
. De um modo geral, GO
irá executar os comandos SQL relacionados n
vezes.
O comando GO não é uma declaração Transact-SQL, mas um comando especial reconhecido por vários utilitários MS, incluindo o editor de código SQL Server Management Studio.
O comando GO é usado para agrupar comandos SQL em lotes que são enviados para o servidor em conjunto. 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 então usá - lo em outro, uma vez que o escopo da variável é limitado ao lote em que é definido.
Para mais informações, ver http://msdn.microsoft.com/en-us/library/ms188037.aspx.
GO não é uma palavra-chave SQL.
É um separador de lotes usado pelas ferramentas do cliente (como o SSMS) para quebrar todo o programa em lotes
Respondeu várias vezes... Exemplo 1
Só para adicionar às respostas existentes, quando estiver a criar visualizações, deverá separar estes comandos em lotes usando go
, caso contrário irá obter o erro 'CREATE VIEW' must be the only statement in the batch
. Então, por exemplo, você não será capaz de executar o seguinte script sql sem go
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
Use herDatabase
GO ;
O código diz para executar as instruções acima do marcador GO
.
A minha base de dados por omissão é a myDatabase, por isso, em vez de usar myDatabase GO
e faz a consulta actual para usar a herDatabase
Go significa que, quaisquer que sejam as declarações SQL escritas antes e depois de qualquer GO anterior, irá para o servidor SQL para processamento.
Select * from employees;
GO -- GO 1
update employees set empID=21 where empCode=123;
GO -- GO 2
No exemplo acima, as declarações antes do GO 1 irão para o SQL sever em um lote e então quaisquer outras instruções antes do GO 2 irão para o servidor sql em outro lote. Então, como vemos, separou lotes.
SELECT 'Go'
Go 10
Sintaxe: Go INT (BatchNumber)
Número de lotes: {[7] } nenhum dos tempos ocorreu
Parece simples, pode levar-te ao esparguete se codificares mais fundo.