2015-08-08 7 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

Смежные вопросы