筆者工作的公司采用的是SQLServer數據庫,每天都要處理大量的數據,由於筆者進公司的時間比較晚,公司現有的大部分的程序都是以前的程序員留下的,因為他們沒有相關的文檔,筆者對於後台數據庫的很多表的結構和數據都不甚了解,給日常的維護造成了很大的麻煩。草地chin ai tp owercCDBR
在對後台數據庫進行研究的過程中,我需要得到數據庫的某些相關信息,比如,公司的數據庫中有幾個表存放筆者的個人資料,像人事表、工資表、部門表等等,但具體是哪些表,就不是很清楚了,如果要一個一個表地找,可能天亮了也找不完,所以我決定做一個通用的存儲過程,能對當前數據庫所有字符型字段進行遍歷,找出精確匹配含有要查找字符串的表和字段,並且羅列出來。比如,人事表的Name字段,工資表的Salary_Name字段,部門表的Employe_Name字段都有筆者的名字,我希望能把這些找出來。存儲過程如下:草地chin ai tp owercCDBR
IF EXISTS (SELECT name FROM sysobjects 草地chin ai tp owercCDBR
WHERE name = 'searchname' AND type = 'P')草地chin ai tp owercCDBR
DROP PROCEDURE searchname草地chin ai tp owercCDBR
Go草地chin ai tp owercCDBR
create procedure searchname @sname varchar(10)草地chin ai tp owercCDBR
As草地chin ai tp owercCDBR
begin草地chin ai tp owercCDBR
create table #TableList(草地chin ai tp owercCDBR
tablename char(200),草地chin ai tp owercCDBR
colname char(200)草地chin ai tp owercCDBR
)草地chin ai tp owercCDBR
declare @table varchar(200)草地chin ai tp owercCDBR
declare @col varchar(200)草地chin ai tp owercCDBR
set nocount on草地chin ai tp owercCDBR
declare curTab scroll cursor for select name from sysobjects where xtype='u'草地chin ai tp owercCDBR
open curTab草地chin ai tp owercCDBR
fetch next from curTab into @table草地chin ai tp owercCDBR
while @@FETCH_STATUS=0草地chin ai tp owercCDBR
begin草地chin ai tp owercCDBR
declare curCol scroll cursor for select name from syscolumns where (xtype=175 or xtype=167) and (id in (select id from sysobjects where name=@table))草地chin ai tp owercCDBR
open curCol草地chin ai tp owercCDBR
fetch next from curCol into @col草地chin ai tp owercCDBR
while @@FETCH_STATUS=0草地chin ai tp owercCDBR
begin草地chin ai tp owercCDBR
execute('insert into #TableList select ''+@table+'',''+@col+'' from '+@table+' where '+@col+'=''+@sname+'')草地chin ai tp owercCDBR
fetch next from curCol into @col草地chi