求存储过程(不知道能不能写出来!请个位瞅瞅)

MasterLRC 2003-08-23 11:55:46
请教各位大侠,我在用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)


...全文
44 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyun2003 2003-08-25
  • 打赏
  • 举报
回复
头晕啊。先清醒一下。
MasterLRC 2003-08-24
  • 打赏
  • 举报
回复
的确TMD有点复杂,可能你们没遇到过.
在有外键的表中,外键引用的是代码表的 ID 号,显示的时候却要显示成 Name


简单来说:

如果想显示aa表

1.靠sys_tab表,找出该列是否是外键。

2.靠外键系统表sysforeignkeys,找到这个外键引用的表,设这个表名为:code_1(外键是引用的 code_1 表的第一列,设列名是code_ID)

3.在显示aa表时,假设aa表中的某一行的外键列中存储的是12345,我们要把他显示成,在code_1 表中 code_ID 是 12345 的行的第二列(真够乱的,不好意思!)


gmc007 2003-08-23
  • 打赏
  • 举报
回复
try:

select case(col_fk) when 0 then col_name when 1 then col_china_name end as col_name from sys_tab

假设:当col_fk的值为0时无外键关联,为1时有。
MasterLRC 2003-08-23
  • 打赏
  • 举报
回复
把表中所有是外键的列(在外键约束中引用的表的ID号列),显示成在外键约束中引用的表的 name 列 (就是把'%_ID'列换成'%_name'列)
也就是把代码表的 ID号 显示成 name


把第一列换成第二例就行了
txlicenhe 2003-08-23
  • 打赏
  • 举报
回复
楼主是在考大家的审题能力了?

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧