1

以下查询有什么问题?但是,如果我删除第一个“Go”,它会正常工作。

Go
if exists(select 1 from sys.objects where name='SP_xyz' and type='P')
drop procedure SP_xyz 
Go
4

1 回答 1

0

无需先GO,

因为 GO 是执行批处理的命令。在第一个 GO 执行之前你没有任何语句。

请参考下面的示例和评论。

以下示例创建两个批次。第一批只包含一个 USEAdventureWorks2012 语句来设置数据库上下文。其余语句使用局部变量。因此,必须将所有局部变量声明分组在一个批次中。这是通过在引用变量的最后一条语句之后才使用 GO 命令来完成的。

USE AdventureWorks2012;
GO
DECLARE @NmbrPeople int
SELECT @NmbrPeople = COUNT(*)
FROM Person.Person;
PRINT 'The number of people as of ' +
      CAST(GETDATE() AS char(20)) + ' is ' +
      CAST(@NmbrPeople AS char (10));
GO
于 2013-01-03T06:19:34.820 回答