系統開發過中,2分鐘之內搞定資料字典表文件的更新

2021-06-16 01:03:07 字數 3521 閱讀 6300

系統開發過中,資料字典表的

更新你們是否發現,

在系統開發過程中,你的在不停的改變,最初發給每個開發人員的資料表定義,

已經變得面目全非了,如果你這個這個專案開發的負責人,下面的人老是說,怎麼資料表又變了

怎麼也不通知我們呢,有時候工作繁忙,也不一定能夠通知到所有的開發人員。

為此,我特地作了乙個自動化的工具,每當資料表又大的變動時,你不需要再次去修改原始資料字典文件了

你只要按照我的步驟來做,保證這一切在2分鐘之內,幫你搞定資料字典文件的

更新。注意本方法,只針對ms2000。很遺憾,這一切,還沒有做到完全自動化,誰有這個興趣,完善它,我相信到時候,這一切會在1分鐘之內搞定。

1.    在你的系統資料庫中,建立以下儲存過程

該儲存過程是獲取資料字典資訊

createproceduregetalltableinfoas

begin

declare@au_idvarchar(11),@strnamevarchar(50),@tidint,@strownervarchar(50)

--獲取所有的使用者表資訊

declareall_tablescursor

forselectconvert(varchar,name),idfromsysobjectswherextype='u'orderbyname

createtable#colinfo

(tnamevarchar(50),             --表名稱

colnamevarchar(50),             --列名稱

remarksql_variant,             --注釋

typevarchar(50),             --資料型別

defaultvaluevarchar(255),  --預設值

isallownullvarchar(10),      --是否允許為空

isprimarykeychar(2)         --是否為主鍵,用*標記

)--主鍵資訊

createtable#pkinfo

(table_qualifiervarchar(50),

table_ownervarchar(50),

table_namevarchar(50),

column_namevarchar(50),

key_seqint,

pk_namevarchar(50)

)set@strowner=user_name()

openall_tables

fetchnextfromall_tablesinto@strname,@tid

while@@fetch_status=0

begin

--插入表及其注釋資訊

insertinto#colinfo

select@strname,'',isnull(value,''),'','','',''

from(select@strnametname)aleftjoin

::fn_listextendedproperty('ms_description',n'user',n'dbo',n'table',@strname,null,null) --表的注釋資訊

on1=1

--插入列資訊

insertinto#colinfo

select@strname,c.namecname,convert(varchar,r.value)+(casec.statuswhen0x80thenchar(13)+char(10)+'自動增長列'else''end),

(casewhen(c.xtype>=34andc.xtype<=58)orc.xtypein(61,98,99,104,127,189)thent.namewhenc.xtypein(59,60,106,108,122)thent.name+'('+convert(varchar,c.xprec)+','+convert(varchar,c.xscale)+')'elset.name+'('+convert(varchar,c.length)+')'end),

isnull(def.text,''),

caseisnullablewhen1then'是'else'否'end,

''from(systypest

innerjoin

(syscolumnsc

leftjoin

syscommentsdef

onc.cdefault=def.idand1=def.colid

)ont.xtype=c.xtypeandt.xusertype=c.xusertype

)leftjoin

::fn_listextendedproperty('ms_description',n'user',n'dbo',n'table',@strname,n'column',null)r--列的注釋資訊

onconvert(varchar,r.objname)=convert(varchar,c.name)

wherec.id=object_id(@strname)

insertinto#pkinfoexec[dbo].[sp_pkeys]@strname,@strowner,default

fetchnextfromall_tablesinto@strname,@tid

end--

更新主鍵資訊

update#colinfo

setisprimarykey='是'

from#pkinfo

where#pkinfo.table_name=#colinfo.tnameand#pkinfo.column_name=#colinfo.colname

closeall_tables

deallocateall_tables

select'%%%%'objname,''remark,''col1,''col2,''col3,''col4,tname,0flag

from#colinfo

wherecolname=''

union

select '表名:'+tname,remark,'','','','',tname,1flag

from#colinfo

wherecolname=''

union

select'列名','注釋','資料型別','預設值','是否允許空','主鍵',tname,2

from#colinfo

wherecolname=''

union

selectcolname,remark,type,defaultvalue,isallownull,

isprimarykey,tname,3

from#colinfo

wherecolname<>''

orderby7,8,3

droptable#pkinfo

droptable#colinfo 

end2.    mssqlsever提供的查詢分析器中,

execgetalltableinfo

3.    將查詢結果資訊,複製到mssheet中共2頁  1 

300分鐘搞定資料結構與演算法課程學習 2 列表

鍊錶 linkedlist 單鏈表 鍊錶中的每個元素實際上是乙個單獨的物件,而所有物件都通過每個元素中的引用字段鏈結在一起。雙鏈表 與單鏈表不同的是,雙鏈表的每個結點中都含有兩個引用字段。鍊錶的優缺點 鍊錶的優點如下 鍊錶能靈活地分配記憶體空間 能在 o 1 時間內刪除或者新增元素,前提是該元素的前...

300分鐘搞定資料結構與演算法課程學習2 棧

棧 stack 特點 棧的最大特點就是後進先出 lifo 對於棧中的資料來說,所有操作都是在棧的頂部完成的,只可以檢視棧頂部的元素,只能夠向棧的頂部壓 資料,也只能從棧的頂部彈出資料。實現 利用乙個單鏈表來實現棧的資料結構。而且,因為我們都只針對棧頂元素進行操作,所以借用單鏈表的頭就能讓所有棧的操作...

300分鐘搞定資料結構與演算法課程學習2 佇列

佇列 queue 特點 和棧不同,佇列的最大特點是先進先出 fifo 就好像按順序排隊一樣。對於佇列的資料來說,我們只允許在隊尾檢視和新增資料,在隊頭檢視和刪除資料。實現 可以借助雙鏈表來實現佇列。雙鏈表的頭指標允許在隊頭檢視和刪除資料,而雙鏈表的尾指標允許我們在隊尾檢視和新增資料。應用場景 直觀來...