Bu procedur çok işime yaradı,sizinde işinize yarar diye paylaşmak istiyorum.Parametre olarak aldığı kelimeyi database deki mevcut tüm tablolarda nchar,nvarchar,varchar alanlarında arayıp tablo ismi ,sütun ismi ve aranan kelimle kaç kare geçmiş bize getiriyor.

Create PROCEDURE [dbo].[nsp_TabloGecenKelimeler]

      @WORD VARCHAR(20)

AS

BEGIN

DECLARE @TABLOADI VARCHAR(50)

DECLARE @SUTUNADI VARCHAR(50)

DECLARE @ID INT

DECLARE @CID INT

DECLARE @SORGU VARCHAR(MAX)

CREATE TABLE #TT(

ID INT,

CID INT)

DECLARE WEB_SORGU CURSOR FOR

select a.name,b.name,a.id,b.colid from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)

OPEN WEB_SORGU

FETCH NEXT FROM WEB_SORGU INTO   @TABLOADI,@SUTUNADI,@ID,@CID

while (@@FETCH_STATUS=0)

BEGIN

SET @SORGU='INSERT INTO #TT(ID,CID) SELECT ' + CONVERT(varchar(20),@ID)+',' + CONVERT(varchar(10),@CID) + ' FROM ['+ @TABLOADI +'] where ' + @SUTUNADI +' like ''%'+@WORD+'%'' '

EXEC(@SORGU)

FETCH NEXT FROM WEB_SORGU INTO   @TABLOADI,@SUTUNADI,@ID,@CID

END

-------------- 

  CLOSE WEB_SORGU

  DEALLOCATE WEB_SORGU

-------------------

select a.name as [Tablo Ismi],b.name [Sutun Ismi],count(*) as Toplam from sysobjects a

join syscolumns b on a.id=b.id join #TT c on b.id=c.ID and b.colid=c.CID

GROUP BY a.name,b.name order by a.name,b.name

 

--select * from #TT

Drop Table #TT

END

Etiketler : Stored Procedur sql mssql t-sql
Kategoriler : Programlama
Yorumlar : 0 Yorum Yorum Yaz

Yorumlar

Yorum Eklenmemiş...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *