Search This Blog

Wednesday, January 12, 2011

Dependent tables used in stored procs.

CREATE PROCEDURE USEDTABLESAS
BEGIN

DECLARE @qry NVARCHAR(MAX),@dbname VARCHAR(100),@dbid VARCHAR(3)
DECLARE @table TABLE (SLno INT IDENTITY(1, 1),Tablename VARCHAR(500),Tableid varchar(100),Dbname VARCHAR(100),Dbid INT)
DECLARE @table2 TABLE (Slno INT, Tablename VARCHAR(500))
DECLARE @table3 TABLE (Spname VARCHAR(500), spcode VARCHAR(MAX))
DECLARE @table4 TABLE (Spname VARCHAR(500), Tablename VARCHAR(500))
DECLARE DB CURSOR FOR
SELECT [Name],database_id FROM sys.DatabasesWHERE database_id in (10)
OPEN DBFETCH NEXT FROM DB INTO @dbname,@dbid
WHILE @@FETCH_STATUS = 0
BEGIN
SET @qry = 'SELECT [Name],object_id,''' + @dbname + ''',''' + @dbid + ''' FROM ' + @dbname + '.sys.columns '
INSERT INTO @table
EXEC (@qry)
FETCH NEXT FROM DB INTO @dbname,@dbid
END
CLOSE DBDEALLOCATE DBINSERT INTO @table2
SELECT Slno,Dbname + '.dbo.' + Tablename AS TablenameFROM @table
INSERT INTO @table3  SELECT [Name] AS Spname,OBJECT_DEFINITION(OBJECT_ID) AS spcode FROM sys.procedures
DECLARE @value VARCHAR(500)
DECLARE SP CURSOR FOR
SELECT Tablename FROM @table2 OPEN SP FETCH NEXT FROM SP INTO @value WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @table4 SELECT spname,@valueFROM (SELECT Spname,spcode, PATINDEX('%' + @value + '%', spcode) AS idx FROM @table3) AS a WHERE  idx > 0
FETCH NEXT FROM SP INTO @valueEND
CLOSE Sp
DEALLOCATE Sp

SELECT DISTINCT t.Spname,t.Tablename,b.Dbname,b.Tablename as t into##ttFROM @table4 t,@table2 a,@table b WHERE t.Tablename = a.Tablename and a.Slno = b.SLno
END

No comments:

Post a Comment