查询视图对应的基表名以及视图字段和对应的基表字段名

近日用到查询视图字段对应基表字段还是会有错位。 

因为实际用到的比较少,几年前发布的基于动态视图实现的方法, 就不作深入研究啦。

重新发布查询指定的单个视图名的存储过程,经测试无误!

CREATE proc [dbo].[pGetViewSchema]
@ViewName nvarchar(50)
as
declare @vid nvarchar(50);declare @tid nvarchar(50);declare @tName nvarchar(50);
select @vid=id from sysobjects where name=@ViewName 
select top 1 @tid=depid from sysdepends where id=@vid 
select @tName=name from sysobjects where id=@tid

select @ViewName ViewName,@tName TableName
    ,t1.name ViewCol,t2.name TableCol
from (select name,ROW_NUMBER() over(order by colid) as a 
    from syscolumns where id=@vid)     t1,
(select name,ROW_NUMBER() over(order by colid) as a 
    from syscolumns where id=@tid and colid in
(select depnumber from sysdepends where id=@vid))   t2
where t1.a=t2.a

 



 

 

以下是几年前发的动态视图的方法:

Create View [dbo].[ViewSchema]
as
select v.name ViewName,t.name TableName,vc.name ViewCol,tc.name TableCol
from sysdepends d,
     sysobjects v,
     syscolumns vc,
     sysobjects t,
     syscolumns tc
where objectproperty(d.id,'IsView')=1 
    and d.id=v.id 
    and v.id=vc.id
    and d.depnumber=vc.colid  
    and d.depnumber=tc.colid  
    and d.depid=t.id 
    and t.id=tc.id

 

 以上,查询视图对应的基表名以及视图字段和对应的基表字段名。 

注意:视图中必须有主键字段,否则查出的对应关系可能会错乱!!!

posted @ 2019-01-16 23:07  enif  阅读(489)  评论(0编辑  收藏  举报
豫ICP备2021034901号