ストアド プロシージャおよび関数内のテキストの SQL Server 検索
SQL Server ストアド プロシージャおよび関数内のテキストを検索し、各行の行番号を取得する
約
これは非常に単純なコードで、データベース内のストアド プロシージャと関数内の特定のキーワードの参照と行番号を取得するために使用できます。
これは、別の記事 (以下のリンク) で作成された関数を利用します。この関数は、選択した入力文字に応じて文字列をテーブルに分割します。リターン文字を関数に渡しているので、参照が行われた行をドリルダウンできることを意味します。
SQL
DECLARE @SearchStr NVARCHAR(100)='Holidays'SELECT OBJECT_NAME(object_id) ObjectName,object_id ObjectID,WordInt as Line,REPLACE(REPLACE(REPLACE(REPLACE(WordStr,CHAR(13)+CHAR(10),''),CHAR(10),''),CHAR(13),''),CHAR(9),'') as LineTextFROM [utilities].sys.all_sql_modulesOUTER APPLY [utilities].dbo.TextToRows(CHAR(13),definition) ttrWHERE definition like '%'+@SearchStr+'%' ANDWordStr like '%'+@SearchStr+'%'
約
これにより、データベースから次の結果が返されます。これらは、休日を除く日付でさまざまな計算を行う 3 つの関数であり、SQL 関数セクションにあります。
Results
ObjectName | ObjectID | Line | LineText |
CalcWorkDaysBetween | 1010102639 | 9 | IF (DATEPART(WEEKDAY,@Date)IN(1,7) OR (SELECT Count(*) FROM Holidays WHERE Date=@Date)=1) |
CalcWorkDaysMonth | 1026102696 | 9 | IF (DATEPART(WEEKDAY,@Date) IN(1,7)OR(SELECT Count(*) FROM Holidays WHERE Date=@Date)=1) |
CalcWorkDaysAddDays | 1042102753 | 10 | IF NOT (DATEPART(WEEKDAY,@Date) IN (1,7) OR EXISTS (SELECT * FROM Holidays WHERE Date=@Date)) |