我正在尝试删除存储过程(如果存在),然后通过以下方式创建它:
IF OBJECT_ID('[dbo].[myStoredProc]') IS not NULL
DROP PROCEDURE dbo.myStoredProc
CREATE PROCEDURE [dbo].[myStoredProc]
(
@parameter1 BIT
) AS
IF @parameter1 = 1
BEGIN
....
但它抱怨说:
“CREATE PROCEDURE必须是批次中的唯一声明”
问题:如何修复我的脚本以克服这个问题?
答案 0 :(得分:17)
您需要在第一个逻辑批次的末尾添加go
。
IF OBJECT_ID('[dbo].[myStoredProc]') IS not NULL
DROP PROCEDURE dbo.myStoredProc
go -- you need to add the batch-terminator 'go'
CREATE PROCEDURE [dbo].[myStoredProc]
(
@parameter1 BIT
) AS
IF @parameter1 = 1
BEGIN
..
答案 1 :(得分:8)
在IF
语句后添加 GO ,表明这是您第一个查询批次的结束。
在这里阅读更多内容:
http://msdn.microsoft.com/en-us/library/ms188037.aspx
IF OBJECT_ID('[dbo].[myStoredProc]') IS not NULL
DROP PROCEDURE dbo.myStoredProc
GO
这可以防止您的错误发生。