求存储过程(不知道能不能写出来!请个位瞅瞅)
请教各位大侠,我在用ASP.net 做数据库时有以下问题:
数据库中有一“Sys_Tab“表,表中存储所有表的所有字段的信息。其结构如下:
列名 类型 说明
tab_name char 表名
tab_id int 表ID
col_name varchar 列名
col_china_name varchar 80 列中文名
col_type int 列类型ID (systypes系统表中对应)
col_len int 列长度
col_zs int 精度ID
col_xs int 小数位数ID
col_def int 列默认值ID
col_id int 列ID号
col_pk char 是否外键
col_fk char 是否外键
col_ok char 不一致检查
tab_china_name 表的中文名
col_index char 是否为表的主键
col_null int 可否为空
现在要做到:
输入表名做参数
请问如何在调用并显示某个表时,自动读取“Sys_Tab 表“把表的列名显示成中文(这已由zjcxc(邹建)老大解决)
并且(来了....)
把表中所有是外键的列(在外键约束中引用的表的ID号列),显示成在外键约束中引用的表的 name 列 (就是把'%_ID'列换成'%_name'列)
也就是把代码表的 ID号 显示成 name
参考:
代码表(在外键约束中引用的表)结构 [注意代码表并不是一个表,有多个]
列名 说明
..._ID ID号
..._Name 名称
下面给出系统表 sysforeignkeys 结构做参考。
sysforeignkeys
包含关于表定义中的 FOREIGN KEY 约束的信息。该表存储在每个数据库中。
列名 数据类型 描述
constid int FOREIGN KEY约束的 ID。
fkeyid int 具有 FOREIGN KEY 约束的表对象ID。
rkeyid int 在 FOREIGN KEY 约束中引用的表对象 ID。
fkey smallint 正在引用的列 ID。
rkey smallint 已引用的列 ID。
keyno smallint 该列在引用列列表中的位置。
给出 大牛jcxc(邹建) 显示中列名的存储过程。
create proc p_show @tbname varchar(250)
as
declare @sql varchar(8000)
set @sql='select '
select @sql=@sql+'['+col_china_name+']=['+col_name+'],'
from Sys_Tab where tab_name=@tbname
set @sql=left(@sql,len(@sql)-1)+' from '+@tbname
exec(@sql)