[存储过程] 实用的存储过程之二

发布时间:2010年01月27日      浏览次数:360 次
笔者工作的公司采用的是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草地chin ai tp owercCDBR
end草地chin ai tp owercCDBR
close curCol草地chin ai tp owercCDBR
deallocate curCol草地chin ai tp owercCDBR
fetch next from curTab into @table草地chin ai tp owercCDBR
end草地chin ai tp owercCDBR
close curTab草地chin ai tp owercCDBR
deallocate curTab草地chin ai tp
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!