2015-08-08 102 views
0

我试图批量编译SSMS中的所有存储过程。但只有第一个存储过程被编译,然后为其他程序显示“已经有一个对象... ...”“我把所有的程序保存在一个编辑器中,然后尝试编译[F5]程序,但得到错误。请建议如何批量编译所有程序。批量编译所有存储过程

下面是示例什么,我试图做的:

USE [TESTDB]  
IF OBJECTPROPERTY(object_id('[dbo].[p_get_Codes]'), N'IsProcedure') = 1 
    DROP PROCEDURE [dbo].[p_get_Codes] 
    GO 
    /****** Object: StoredProcedure [dbo].[p_get_Codes] Script Date: 8/8/2015 8:56:32 AM ******/ 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    create proc [dbo].[p_get_Codes] 
    as 

    begin 
    SET NOCOUNT ON; 
     begin 
      --- my stored procedure 
     end 
    SET NOCOUNT OFF; 
    end; 


    IF OBJECTPROPERTY(object_id('[dbo].[p_get_retailers]'), N'IsProcedure') = 1 
    DROP PROCEDURE [dbo].[p_get_retailers] 

    GO 
    /****** Object: StoredProcedure [dbo].[p_get_retailers] Script Date: 8/8/2015 8:58:43 AM ******/ 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    create proc [dbo].[p_get_retailers] 
    as 

    begin 
    SET NOCOUNT ON; 
     begin 
      --- my stored procedure 
     end 
    SET NOCOUNT OFF; 
    end; 


    IF OBJECTPROPERTY(object_id('[dbo].[p_get_Buyers]'), N'IsProcedure') = 1 
    DROP PROCEDURE [dbo].[p_get_Buyers] 
    GO 
    /****** Object: StoredProcedure [dbo].[p_get_Buyers] Script Date: 8/8/2015 10:17:53 AM ******/ 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    create proc [dbo].[p_get_Buyers] 
    as 
    begin 
    SET NOCOUNT ON; 
     begin 
      --- my stored procedure 
     end 
    SET NOCOUNT OFF; 
    end; 


    IF OBJECTPROPERTY(object_id('[dbo].[p_get_seller_groups]'), N'IsProcedure') = 1 
    DROP PROCEDURE [dbo].[p_get_seller_groups] 
    GO 
    /****** Object: StoredProcedure [dbo].[p_get_seller_groups] Script Date: 8/8/2015 10:23:39 AM ******/ 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    create proc [dbo].[p_get_seller_groups] 

    as 
    begin 
    SET NOCOUNT ON; 
     begin 
      --- my stored procedure 
     end 
    SET NOCOUNT OFF; 
    end; 

谢谢!

+0

你试图解析?或试图创建/改变它们? – DarkKnight

+0

试图创建过程。如果存在则删除并批量创建过程。 – user4221591

+0

已添加答案,请检查 – DarkKnight

回答

1

添加go之前每个IF声明,检查存储过程是否存在等

你的脚本应该是这样的

USE [TESTDB]  
IF OBJECTPROPERTY(object_id('[dbo].[p_get_Codes]'), N'IsProcedure') = 1 
    DROP PROCEDURE [dbo].[p_get_Codes] 
    GO 
    /****** Object: StoredProcedure [dbo].[p_get_Codes] Script Date: 8/8/2015 8:56:32 AM ******/ 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    create proc [dbo].[p_get_Codes] 
    as 

    begin 
    SET NOCOUNT ON; 
     begin 
      --- my stored procedure 
     end 
    SET NOCOUNT OFF; 
    end; 

GO 
    IF OBJECTPROPERTY(object_id('[dbo].[p_get_retailers]'), N'IsProcedure') = 1 
    DROP PROCEDURE [dbo].[p_get_retailers] 

    GO 
    /****** Object: StoredProcedure [dbo].[p_get_retailers] Script Date: 8/8/2015 8:58:43 AM ******/ 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    create proc [dbo].[p_get_retailers] 
    as 

    begin 
    SET NOCOUNT ON; 
     begin 
      --- my stored procedure 
     end 
    SET NOCOUNT OFF; 
    end; 

GO 
    IF OBJECTPROPERTY(object_id('[dbo].[p_get_Buyers]'), N'IsProcedure') = 1 
    DROP PROCEDURE [dbo].[p_get_Buyers] 
    GO 
    /****** Object: StoredProcedure [dbo].[p_get_Buyers] Script Date: 8/8/2015 10:17:53 AM ******/ 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    create proc [dbo].[p_get_Buyers] 
    as 
    begin 
    SET NOCOUNT ON; 
     begin 
      --- my stored procedure 
     end 
    SET NOCOUNT OFF; 
    end; 

GO 
    IF OBJECTPROPERTY(object_id('[dbo].[p_get_seller_groups]'), N'IsProcedure') = 1 
    DROP PROCEDURE [dbo].[p_get_seller_groups] 
    GO 
    /****** Object: StoredProcedure [dbo].[p_get_seller_groups] Script Date: 8/8/2015 10:23:39 AM ******/ 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    create proc [dbo].[p_get_seller_groups] 

    as 
    begin 
    SET NOCOUNT ON; 
     begin 
      --- my stored procedure 
     end 
    SET NOCOUNT OFF; 
    end; 
+0

感谢您的回复! – user4221591

+0

欢迎您! – DarkKnight