2015-04-26 33 views
1

我需要对数百个SQL脚本文件执行搜索和替换操作。这个想法是把这样的:sql文件上的正则表达式

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

进入这个:

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 

要做到这一点,我会用记事本++

任何建议或想法?

+0

感谢所有回答的人。我非常感谢你的帮助 – abx78

回答

1

你可以使用这个表达式替换:

Find What:  CREATE\s+PROCEDURE\s+(\[.*?\]\.\[.*?\])\s+\(\s+(@id INT,\[email protected] 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\) 

测试:

enter image description here

1

搜索:

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

取代:

IF OBJECT_ID \('$1'\) IS NULL \n EXEC \('CREATE PROCEDURE $1 AS SET NOCOUNT ON;'\) \n GO \n ALTER PROCEDURE $1 \(