论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Sql Server教程
Tag:注入,存储过程,分页,安全,优化,加密,索引,日志,压缩,base64,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,触发器,socket,安装,sqlserver2000,sqlserver2005,sqlserver2008,视频教程

实用的存储过程之二

文章类别:Sql Server | 发表日期:2008-10-5 21:36:18

实用的存储过程之二

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

set nocount off草地chin ai tp owercCDBR

select  distinct * from #TableList草地chin ai tp owercCDBR

drop table #tablelist  草地chin ai tp owercCDBR

end草地chin ai tp owercCDBR

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

本存储过程在SQLServer7.0/2000下通过。草地chin ai tp owercCDBR

 草地chin ai tp owercCDBR

视频教程列表
文章教程搜索
 
Sql Server推荐教程
Sql Server热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058