2010-05-25 38 views
19

Tôi mới sử dụng TSQL và tự hỏi câu lệnh GO thực sự có ý nghĩa gì. Đối với tôi, nó dường như bị ném vào trong đó có vẻ như nó vừa vặn.Ý nghĩa của câu lệnh GO trong TSQL

Tôi đoán bằng cách nào đó nó sẽ báo cho máy chủ sql chạy câu lệnh trước? Điều gì xảy ra nếu bạn không sử dụng chúng? Ai đó có thể đưa ra một ví dụ mà một tuyên bố sẽ phá vỡ nếu tôi không sử dụng một số GO.

Vui lòng xây dựng.

+0

bản sao có thể có của [Tuyên bố T-SQL GO] (http://stackoverflow.com/questions/2668529/t-sql-go-statement) – Thomas

Trả lời

14

Đó là một terminator batch

này sẽ phá vỡ

declare @i int 
set @i =5 

declare @i int 
set @i =6 

Select @i 

Msg 134, Level 15, State 1, Line 5 Tên biến '@i' đã được công bố. Tên biến phải là duy nhất trong chuỗi truy vấn hoặc thủ tục được lưu trữ.

này sẽ làm việc

declare @i int 
set @i =5 

go 
declare @i int 
set @i =6 

Select @i 
10

Nó kết thúc đợt.

Rất hiếm khi được sử dụng và được sử dụng thường xuyên hơn mức cần thiết. Một nơi hợp lệ là trong chương trình proc được lưu trữ, nơi bạn lần đầu tiên thực hiện kiểm tra nếu proc tồn tại và thả nó nếu nó không. Sau đó, bạn sử dụng một câu lệnh go để kết thúc lô vì câu lệnh create proc phải là câu lệnh đầu tiên của một lô.

+1

Địa điểm hợp lệ và phổ biến khác là với lệnh ALTER VIEW trong TSQL của bạn. ''ALTER VIEW' phải là câu lệnh duy nhất trong lô'. Tức là, nó cần một 'GO' trước và sau khi XEM ALTER. – mmcrae

6

Bằng cách này. Nó không thực sự là một lệnh TSQL. Nó chỉ được sử dụng bởi các công cụ Microsoft DB để tách hai lô lệnh.

Thực tế bạn có thể định cấu hình nó thành một từ khác trong SSMS nếu bạn muốn trong cài đặt Tùy chọn chia tách tùy chọn. Địa chỉ chính sự khác biệt này rất quan trọng là SQL sẽ choke trên câu lệnh GO nếu bạn cố gắng sử dụng chúng trong các truy vấn thông qua kết nối cơ sở dữ liệu từ mã, ví dụ thông qua ADO.NET.

Các vấn đề liên quan