2010-02-19 39 views
259

SQL Server Management Studio luôn chèn lệnh GO khi tôi tạo truy vấn bằng cách sử dụng menu chuột phải "Script As". Tại sao? GO thực sự làm gì?Việc sử dụng GO trong SQL Server Management Studio & Transact SQL là gì?

+2

Duplicate - http://stackoverflow.com/questions/971177/using-go-within-a-transaction – ChrisF

+23

@ ChrisF - đó không phải là một bản sao, mặc dù câu trả lời được chấp nhận cũng trả lời câu hỏi này.Câu hỏi đó là về việc sử dụng "GO" trong một giao dịch - nó chỉ ra rằng nó không thực sự là một lệnh SQL chút nào. Câu hỏi này tổng quát hơn nhiều và cố gắng cung cấp một câu trả lời dứt khoát cho các câu hỏi về lệnh GO trong SSMS. – tvanfosson

+2

Ngoài ra hãy xem liên kết này: [Các câu lệnh batching tốt cho là gì?] (Http://stackoverflow.com/questions/20711326/sql-server-what-are-batching-statements-ie-using-go-good -cho) –

Trả lời

241

Đó là một terminator hàng loạt, bạn có thể thay đổi tuy nhiên nó đến bất cứ điều gì bạn muốn alt text

+56

gbn làm cho nó CHỌN và xem điều gì xảy ra :-) – SQLMenace

+41

@SQLMenace là nơi bạn lấy tên của bạn từ ....;) – enderland

+13

Đó là vì tên tôi là Denis ;-) – SQLMenace

158

Lệnh GO không phải là câu lệnh Transact-SQL, mà là lệnh đặc biệt được một số tiện ích MS nhận dạng bao gồm trình soạn thảo mã SQL Server Management Studio.

Lệnh GO được sử dụng để nhóm các lệnh SQL thành các lô được gửi đến máy chủ cùng nhau. Các lệnh được bao gồm trong lô, tức là tập các lệnh từ lệnh GO cuối cùng hoặc bắt đầu phiên, phải nhất quán về mặt logic. Ví dụ, bạn không thể định nghĩa một biến trong một lô và sau đó sử dụng nó trong một biến khác vì phạm vi của biến được giới hạn trong lô mà nó được định nghĩa.

Để biết thêm thông tin, hãy xem http://msdn.microsoft.com/en-us/library/ms188037.aspx.

+20

Trong trường hợp nào thì việc xếp hàng với 'GO' thực sự hữu ích? – nicodemus13

+2

@ nicodemus13 Xem http://stackoverflow.com/questions/20711326/sql-server-what-is-go-good-for –

+29

Đây phải là câu trả lời được chấp nhận. Câu trả lời được chấp nhận hiện tại không thực sự trả lời câu hỏi. – Zack

19

GO không phải là từ khóa SQL.

Đó là một dấu phân cách hàng loạt được sử dụng bởi các công cụ của khách hàng (như SSMS) để phá vỡ toàn bộ kịch bản thành lô

trả lời trước nhiều lần ... example 1

+4

Trong phòng thủ của tôi, tôi đã xem xét các bản sao được đề xuất trước khi tôi gửi câu hỏi - và ví dụ của bạn không hiển thị, cũng không thực sự là bản sao, mặc dù câu trả lời có thể áp dụng được. – tvanfosson

+16

Thật khó để tìm kiếm "GO" ở đây :-) – gbn

5
Use herDatabase 
GO ; 

Mã nói để thực hiện các hướng dẫn trên GO marker. cơ sở dữ liệu mặc định của tôi là myDatabase, vì vậy thay vì sử dụng myDatabase GO và làm cho truy vấn hiện tại để sử dụng herDatabase

233

Từ Management Studio 2005 có vẻ như là bạn có thể sử dụng GO với một tham số int, như:

INSERT INTO mytable DEFAULT VALUES 
GO 10 

Trên đây sẽ chèn 10 hàng vào mytable. Nói chung, GO sẽ thực thi lệnh sql có liên quan n lần.

+48

+1 rất hữu ích! –

+4

thông tin rất tốt, cảm ơn – Salim

+2

có không biết điều đó, tuyệt vời! : D – alamin

-2

Đây là sự kỳ diệu của GO.

SELECT 'Go' 
Go 10 

CÚ PHÁP: Go INT (BatchNumber)

BatchNumber: Số lần xảy ra

Trông đơn giản, Nó có thể dẫn bạn đến Spaghetti nếu bạn mã hóa sâu sắc hơn.

5

Chỉ để thêm vào câu trả lời hiện có, khi bạn đang tạo chế độ xem, bạn phải tách các lệnh này thành các lô bằng cách sử dụng go, nếu không bạn sẽ gặp lỗi 'CREATE VIEW' must be the only statement in the batch. Vì vậy, ví dụ, bạn sẽ không thể thực thi kịch bản sql sau đây mà không 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 
Các vấn đề liên quan