中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
实用的存储过程之二
作者:未知 时间:2002-03-01 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

实用的存储过程之二

笔者工作的公司采用的是SQLServer数据库,每天都要处理大量的数据,由于笔者进公司的时间比较晚,公司现有的大部分的程序都是以前的程序员留下的,因为他们没有相关的文档,笔者对于后台数据库的很多表的结构和数据都不甚了解,给日常的维护造成了很大的麻烦。

在对后台数据库进行研究的过程中,我需要得到数据库的某些相关信息,比如,公司的数据库中有几个表存放笔者的个人资料,像人事表、工资表、部门表等等,但具体是哪些表,就不是很清楚了,如果要一个一个表地找,可能天亮了也找不完,所以我决定做一个通用的存储过程,能对当前数据库所有字符型字段进行遍历,找出精确匹配含有要查找字符串的表和字段,并且罗列出来。比如,人事表的Name字段,工资表的Salary_Name字段,部门表的Employe_Name字段都有笔者的名字,我希望能把这些找出来。存储过程如下:

IF EXISTS (SELECT name FROM sysobjects

         WHERE name = 'searchname' AND type = 'P')

   DROP PROCEDURE searchname

Go

create procedure searchname @sname varchar(10)

As

begin

create table #TableList(

  tablename  char(200),

  colname char(200)

)

 

declare @table varchar(200)

declare @col varchar(200)

 

set nocount on

declare curTab scroll cursor for select name from sysobjects where xtype='u'

open curTab

fetch next from curTab into @table

while @@FETCH_STATUS=0

begin

  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))

  open curCol

  fetch next from curCol into @col

  while @@FETCH_STATUS=0

  begin

    execute('insert into #TableList select '''+@table+''','''+@col+''' from '+@table+' where '+@col+'='''+@sname+'''')

    fetch next from curCol into @col

  end

  close curCol

  deallocate curCol

  fetch next from curTab into @table

end

close curTab

deallocate curTab

set nocount off

select  distinct * from #TableList

drop table #tablelist 

end

调用很简单,如想找笔者的名字,调用SearchName ‘forgot2000’即可,查找速度视乎当前数据库的大小而定。希望这个存储过程能对大家有所帮助吧。本人E-mail:coolforgot@sina.com,QQ:33563255,希望能跟大家共同交流,谢谢!

本存储过程在SQLServer7.0/2000下通过。

 

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有