以下查询有什么问题?但是,如果我先删除“Go”,它就能正常工作。
Go
if exists(select 1 from sys.objects where name='SP_xyz' and type='P')
drop procedure SP_xyz
Go
答案 0 :(得分: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