使用Go后'使用[Database_Name]?

时间:2017-10-24 18:15:44

标签: sql-server

我看到的常见模式是:

USE Name_Of_My_Database
GO

据我所知,这没有意义,是吗?我已经尝试在下面列出的地方寻找答案,但它不存在:

What is the use of GO in SQL Server Management Studio & Transact SQL?

In SQL Server, when should you use GO and when should you use semi-colon ;?

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/sql-server-utilities-statements-go

编辑:不,这不是重复,这个问题更具体 - 我没有在链接问题中找到我需要的信息,尽管我在发布之前已经阅读过。

2 个答案:

答案 0 :(得分:4)

GO;之间存在两大差异:

  1. GO将脚本分成不同的批次。
  2. ;是一个声明终止符。
  3. 当以下语句需要时,在GO之后使用USE DatabaseName它是批处理中的第一个语句。例如,以下代码将失败:

    Use SomeDatabase
    
    Create Procedure spSomeProcedure
    As Begin
        Select 1
    End
    
      

    Msg 111,Level 15,State 1,Procedure spSomeProcedure,Line 4
      '创建/更改程序'必须是查询批处理中的第一个语句。

    但是在它们之间添加GO将允许语句运行:

    Use SomeDatabase
    Go
    
    Create Procedure spSomeProcedure
    As Begin
        Select 1
    End
    
      

    命令已成功完成。

答案 1 :(得分:0)

我将SSMS脚本选项设置为不编写USE语句的脚本。一般来说,我发现它们毫无意义。

“GO”不是SQL命令,它只是一个批处理分隔符......它是SSMS功能(或ISQL / OSQL功能),而不是SQL Server功能。这是一种让一个文本文件包含多批SQL发送到SQL Server的方法。