簡體   English   中英

SQL Server:我是否需要在批次之間使用GO語句?

[英]SQL Server: Do I need to use GO statements between batches?

我見過人們在批量的SQL代碼之間使用GO語句,但是AFAICS並不是強制性的(SQL Server 2008)。 批處理/ SQL語句集之間使用GO語句有什么好處?

它們並不是嚴格要求的 - 它們只是SQL Server Management Studio的指令,用於執行到目前為止的語句,然后繼續運行。 GO 不是 T-SQL關鍵字或任何東西 - 它只是一個在SSMS中工作的指令。

有時,您需要GO - 例如,如果您向表中添加列,然后又想要再次選擇它,則需要在添加列和查詢之間進行GO操作。

例如,如果您嘗試執行此操作,您將從SSMS獲得錯誤:

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5

結果是:

消息207,級別16,狀態1,行9無效的列名稱'datetimestamp'。

關鍵是:SSMS正在嘗試立即驗證整個語句,但在SELECT語句中,它會抱怨缺少DateTimeStamp列。

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO       

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5

如果你在兩個語句之間放置一個GO ,它就會起作用,因為SSMS不會提前解析和驗證整個語句 - 它將執行第一部分,然后僅解析第二部分(在GO )。

但除了像這樣的情況之外,GO幾乎不需要。

只有SQL工具才能告訴SSMS批處理開始和結束的位置。 某些語句也需要它,例如CREATE TRIGGER,它必須是批處理中的第一個

例如,在ac#到SQL Server調用它沒有任何意義

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM