Usuário com melhor resposta
Por que e quando usar o comando GO?

Pergunta
-
Respostas
-
Marcelo,
O comando GO informa até aonde deve ser processdo como uma unica batch, veja este codigo abaixo, veja a diferença que o GO faz, uma vez que o segundo select é executado apartado do primeiro.
DECLARE
@t1 INT
SET
@t1 = 5
SELECT
@t1
GO
SELECT
@t1
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta MarceloSchneider quinta-feira, 28 de fevereiro de 2013 18:42
Todas as Respostas
-
Marcelo,
O comando GO informa até aonde deve ser processdo como uma unica batch, veja este codigo abaixo, veja a diferença que o GO faz, uma vez que o segundo select é executado apartado do primeiro.
DECLARE
@t1 INT
SET
@t1 = 5
SELECT
@t1
GO
SELECT
@t1
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta MarceloSchneider quinta-feira, 28 de fevereiro de 2013 18:42
-
Entendi, obrigado!
- Editado MarceloSchneider quinta-feira, 28 de fevereiro de 2013 18:42
-
-
Jonas,
Sim, pois o segundo select nao encontra a declaração da variavel pois estão sendo executados em batchs diferentes devido ao GO no meio das instruções.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Sugerido como Resposta Renato Siqueira sábado, 2 de março de 2013 03:51
-
-
Basicamente isso, ele separa os trechos de codigo que serão executados como uma coisa só, ou seja, uma batch.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Sugerido como Resposta Jonas.8 sexta-feira, 1 de março de 2013 13:37
-
Basicamente isso, ele separa os trechos de codigo que serão executados como uma coisa só, ou seja, uma batch.
Entendi. Mas ficou uma dúvida: se eu tenho uma relação de inscruções seguidas do GO, como o exemplo abaixo, elas executam de forma sequencial (sequencia 1, quando terminar, sequencia 2, quando terminar, sequencia 3...) ou ele faz o possível para rodá-las ao mesmo tempo?
Eu sei que na janela de resultados ele mostra sequencial, mas no decorrer da execução? Alguém tem idéia?
exec dbo.procedure 1
go
exec dbo.procedure 2
go
exec dbo.procedure 3
go
-
Basicamente isso, ele separa os trechos de codigo que serão executados como uma coisa só, ou seja, uma batch.
Entendi. Mas ficou uma dúvida: se eu tenho uma relação de inscruções seguidas do GO, como o exemplo abaixo, elas executam de forma sequencial (sequencia 1, quando terminar, sequencia 2, quando terminar, sequencia 3...) ou ele faz o possível para rodá-las ao mesmo tempo?
Eu sei que na janela de resultados ele mostra sequencial, mas no decorrer da execução? Alguém tem idéia?
exec dbo.procedure 1
go
exec dbo.procedure 2
go
exec dbo.procedure 3
go
Olá Hélder,
Sim ele executa sequencialmente. Vc pode executar o código abaixo que comprova isso, veja:
USE [tempdb] GO CREATE TABLE Tabela1 (nome VARCHAR(10),codigo INT) GO CREATE TABLE Tabela2 (nome VARCHAR(10),codigo INT) GO CREATE TABLE Tabela3 (nome VARCHAR(10),codigo INT) GO USE [tempdb] SELECT crdate,name FROM sysobjects WHERE name IN ('Tabela1','Tabela2','Tabela3') GO
Observe na coluna de criacão dos objetos (crdate), os milisegundos, veja que ele vai obedecer a ordem que for especificada no código T-SQL.