|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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”等值,就没有必要为它创建一个索引。 |
|