1

I need to perform a search and replace operation on hundreds of SQL script files. The idea is to transform this:

CREATE PROCEDURE [dbo].[proc_whatever]
    (
      @id INT,
      @parameter VARCHAR(1)
    )
AS 
    BEGIN
        ...
    END

Into this:

IF OBJECT_ID('[dbo].[proc_whatever]') IS NULL
      EXEC('CREATE PROCEDURE [dbo].[proc_whatever] AS SET NOCOUNT ON;')
GO

ALTER PROCEDURE [dbo].[proc_whatever]
    (
      @id INT,
      @parameter VARCHAR(1)
    )
AS 
    BEGIN
        ...
    END

To do this I would use Notepad++.

Any tip or ideas?

Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563
ab_732
  • 3,639
  • 6
  • 45
  • 61

2 Answers2

1

search:

CREATE PROCEDURE ([\[\]a-zA-Z_.]+)\s*\(

replace in:

IF OBJECT_ID \('$1'\) IS NULL \n EXEC \('CREATE PROCEDURE $1  AS SET NOCOUNT ON;'\) \n GO \n ALTER PROCEDURE $1 \(
dovid
  • 6,354
  • 3
  • 33
  • 73
1

You can use this regex replacement:

Find What:     CREATE\s+PROCEDURE\s+(\[.*?\]\.\[.*?\])\s+\(\s+(@id INT,\s+@parameter VARCHAR\(\d+\)\s+)\s+\)
Replace With:  IF OBJECT_ID\('$1'\) IS NULL\r\n    EXEC\('CREATE PROCEDURE $1 AS SET NOCOUNT ON;'\)\r\nGO\r\n\r\nALTER PROCEDURE $1\r\n    \(\r\n      $2\)

Tested:

enter image description here

Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563