仓酷云

标题: MSSQL教程之有用的存储历程之二 [打印本页]

作者: 冷月葬花魂    时间: 2015-1-16 22:27
标题: MSSQL教程之有用的存储历程之二
MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者AmbroseTwebaze提供。存储历程有用的存储历程之二
笔者事情的公司接纳的是SQLServer数据库,天天都要处置大批的数据,因为笔者进公司的工夫对照晚,公司现有的年夜部分的程序都是之前的程序员留下的,由于他们没有相干的文档,笔者关于背景数据库的良多表的布局和数据都不甚懂得,给一样平常的保护形成了很年夜的贫苦。

在对背景数据库举行研讨的过程当中,我必要失掉数据库的某些相干信息,好比,公司的数据库中有几个表寄存笔者的团体材料,像人事表、人为表、部门表等等,但详细是哪些表,就不是很分明了,假如要一个一个表地找,大概天亮了也找不完,以是我决意做一个通用的存储历程,能对以后数据库一切字符型字段举行遍历,找出准确婚配含有要查找字符串的表和字段,而且排列出来。好比,人事表的Name字段,人为表的Salary_Name字段,部门表的Employe_Name字段都有笔者的名字,我但愿能把这些找出来。存储历程以下:

IFEXISTS(SELECTnameFROMsysobjects

WHEREname=searchnameANDtype=P)

DROPPROCEDUREsearchname

Go

createproceduresearchname@snamevarchar(10)

As

begin

createtable#TableList(

tablenamechar(200),

colnamechar(200)

)



declare@tablevarchar(200)

declare@colvarchar(200)



setnocounton

declarecurTabscrollcursorforselectnamefromsysobjectswherextype=u

opencurTab

fetchnextfromcurTabinto@table

while@@FETCH_STATUS=0

begin

declarecurColscrollcursorforselectnamefromsyscolumnswhere(xtype=175orxtype=167)and(idin(selectidfromsysobjectswherename=@table))

opencurCol

fetchnextfromcurColinto@col

while@@FETCH_STATUS=0

begin

execute(insertinto#TableListselect+@table+,+@col+from+@table+where+@col+=+@sname+)

fetchnextfromcurColinto@col

end

closecurCol

deallocatecurCol

fetchnextfromcurTabinto@table

end

closecurTab

deallocatecurTab

setnocountoff

selectdistinct*from#TableList

droptable#tablelist

end

挪用很复杂,如想找笔者的名字,挪用SearchName‘forgot2000’便可,查找速率视乎以后数据库的巨细而定。但愿这个存储历程能对人人有所匡助吧。自己E-mail:coolforgot@sina.com,QQ:33563255,但愿能跟人人配合交换,感谢!

本存储历程在SQLServer7.0/2000下经由过程。


如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。
作者: 透明    时间: 2015-1-24 16:26
我们学到了什么?思考问题的时候从表的角度来思考问
作者: 再现理想    时间: 2015-2-2 10:48
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
作者: 再见西城    时间: 2015-2-7 18:14
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
作者: 变相怪杰    时间: 2015-2-22 22:01
无法深入到数据库系统层面去了解和探究
作者: 飘飘悠悠    时间: 2015-3-7 03:39
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
作者: 老尸    时间: 2015-3-14 10:51
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
作者: 灵魂腐蚀    时间: 2015-3-21 04:37
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2