[英]Faster Regex expression for extracting Stored procedure name
我有此存儲過程,並指定了表名(例如:“ userCompanyGrouping_tbl
”)。 我必須提取使用給定表名的存儲過程名稱。
我正在使用正則表達式CREATE PROCEDURE\\\\s*(?<proc_name>.*|\\n)(.|\\n)*userCompanyGrouping_tbl
從給定的以下示例.sql文件中提取存儲過程,並且執行速度非常慢。
我必須在GB大小的目錄中的多個文件上執行搜索。 結果出來很慢。 我需要一個更快的正則表達式來提取過程名稱。
我正在使用C#正則表達式引擎。
USE [BI]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ActiveUsersRelatedCompanies_prc]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[ActiveUsersRelatedCompanies_prc]
GO
CREATE PROCEDURE [dbo].[ActiveUsersRelatedCompanies_prc]
@Usercompanyid INT
AS
Begin
select *
FROM dbo.ActiveUsersRelatedCompanies_tbl (NOLOCK)
WHERE userCompanyId in (
select ucg2.userCompanyId
from `userCompanyGrouping_tbl` u
inner join userCompanyGrouping_tbl ucg2
on isNull(u.subParentCompanyId,u.parentCompanyId) =
(case when u.subParentCompanyId is not null then ucg2.subParentCompanyId
else ucg2.parentCompanyId end)
where u.userCompanyId = @userCompanyID
)
order by userCompanyName, userGroup, fullName
END
下面的正則表達式會更好,如上所述:
^\s*[^(--)]{0}(CREATE +PROCEDURE|ALTER +PROCEDURE)\s+(?<ParentProcName>(\w|_|\[|\]|\.)*)
“ ParentProcName”將捕獲創建或更改的存儲過程的名稱
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.