Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
robvolk
Most Valuable Yak
15732 Posts |
Posted - 2004-02-05 : 20:07:41
|
Everyone seems to think this needs something elaborate:CREATE PROCEDURE sp_FindText @text varchar(8000), @findtype varchar(1)='P' ASSET NOCOUNT ONIF @findtype='P' SELECT DISTINCT Len(SubString(text,1, PatIndex('%' + @text + '%', text)))-Len(Replace(SubString(text,1, PatIndex('%' + @text + '%', text)),char(13),''))+1 AS Line,--PatIndex('%' + @text + '%', text) AS Position, OBJECT_NAME(id) AS ProcName FROM syscomments WHERE text like '%' + @text + '%' ORDER BY ProcName, LineIF @findtype='C' EXEC('SELECT TABLE_NAME + ''.'' + COLUMN_NAME AS TableColumn FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE ''%' + @text + '%'' ORDER BY TableColumn')IF @findtype='T' EXEC('SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ''%' + @text + '%'' ORDER BY TABLE_NAME')GOIt not only searches procedure and view definition text, it will also find tables, views, and column names:EXEC sp_FindText 'myTable' --or-- EXEC sp_FindText 'myTable', 'P' --finds procedures/views containing 'myTable' in their definition/codeEXEC sp_FindText 'myTable', 'T' --finds tables/views containing 'myTable' in their nameEXEC sp_FindText 'myCol', 'C' --finds columns containing 'myCol' in their nameIt's pretty easy to modify and extend, and probably doesn't need dynamic SQL either. It returns line numbers for views and procedures, but these can be incorrect if the procedure or view contains over 4000 characters of code. It does not search tables for values, it's strictly for finding object names. |
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2004-02-05 : 20:09:24
|
Very cool, Rob. I'll have to compare Vyas' with yours.Tara |
|
|
X002548
Not Just a Number
15586 Posts |
Posted - 2004-02-06 : 11:09:38
|
See, I break out the sledge hammer and Rob uses a scalpel...very nice....I could go in and try to figure it out...but how do you derive line?oops...never mind,,,it's the old length - length replace thing up to the location of the search arg...did I say very nice....Brett8-) |
|
|
|
|
|
|
|