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
参考⇒ここ
返信
コメントを投稿するにはログインしてください。