萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> sql server教程 >> 實用的存儲過程之二

實用的存儲過程之二

實用的存儲過程之二

筆者工作的公司采用的是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

 草地chin ai tp owercCDBR

declare @table varchar(200)草地chin ai tp owercCDBR

declare @col varchar(200)草地chin ai tp owercCDBR

 草地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

copyright © 萬盛學電腦網 all rights reserved