SQLServer ストアドプロシージャをGrepする 

ストアドプロシージャ内をGrepしたいなぁと思ったら、あった。
ネットからの拾いもの。

--スカラ関数
--@SpName : プロシージャの中味を取得するためのプロシージャ名
Create Function fncFindSp (
@SPName Varchar(255)
)
Returns Varchar(8000) As
Begin

Declare @SpBody Varchar(8000)
Declare @RetText Varchar(8000)

Set @SpBody = ''
Set @RetText = ''

Begin
Declare Cur1 Cursor For

Select syscomments.text
From sysobjects
Inner Join syscomments
On sysobjects.id = syscomments.id
Where sysobjects.xtype = 'P'
And sysobjects.status >= 0
And sysobjects.name = @SPName
Order By
syscomments.colid

Open Cur1
Fetch Next From Cur1 Into @SpBody

While (@@Fetch_Status <> -1)
begin
If @SpBody <> ''
Begin
If RTrim(@RetText) = ''
Begin
Set @RetText = @SpBody
End
Else
Begin
Set @RetText = @RetText + @SpBody
End
End
Fetch Next From Cur1 Into @SpBody
End
Close Cur1
End
Return @RetText
End
go

--Grep用ストアド
--@seachWord : ストアドプロシージャ内を検索する文字列
Create Procedure spGrep
@seachWord Varchar(255)
As
BEGIN
select X.*
from
(
Select
sysobjects.[name] As ProcName ,
dbo.fncFindSp(sysobjects.[name]) as ProcBody
From sysobjects
) X
where X.ProcBody like  '%'+@seachWord + '%'
END

実行

EXEC dbo.spGrep '検索文字列'
go

参考⇒ここ