I know this is an old one but I do this alot and to get around it I generate scripte for the stored procedures form SQL Management studio and under advanced I tell it to "check for object existence" SQL 2010+ (pre-2010 was check object exist or something simular) and also set "Script DROP and CREATE" to "Script DROP and CREATE".
Then just take out the "GO"'s (I usually replace-all GO with blank with match case on or go through one by one clicking replace so I know it's the correct GO's being replaced) from the script and it'll run perfect in VB.NET/t-SQL.
This means it generates a script like this:
/****** Object: StoredProcedure [dbo].[test3] Script Date: 11/03/2015 16:47:48 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[test3]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[test3]
/****** Object: StoredProcedure [dbo].[test2] Script Date: 11/03/2015 16:47:48 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[test2]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[test2]
/****** Object: StoredProcedure [dbo].[test1] Script Date: 11/03/2015 16:47:48 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[test1]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[test1]
/****** Object: StoredProcedure [dbo].[test1] Script Date: 11/03/2015 16:47:48 ******/
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[test1]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[test1]
AS
BEGIN
print ''dummy procedure 1''
END
'
END
/****** Object: StoredProcedure [dbo].[test2] Script Date: 11/03/2015 16:47:48 ******/
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[test2]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[test2]
AS
BEGIN
print ''dummy procedure 2''
END
'
END
/****** Object: StoredProcedure [dbo].[test3] Script Date: 11/03/2015 16:47:48 ******/
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[test3]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[test3]
AS
BEGIN
print ''dummy procedure 3''
END
'
END
I started doing this around 5 years ago and never had any issues
Hope this helps people
Regards
Liam