使用自定义查询检索SQL视图列元数据

时间:2013-12-02 08:49:31

标签: sql view metadata

我创建了一个SQL视图,其中一个列值是一个SQL查询,例如“从表B中选择SELECT TOP 1”,列别名为“Result”

我尝试了INFORMATION_SCHEMA.COLUMNS,而COLUMN_NAME只显示了'TableB'。如何从TableB中检索“SELECT TOP 1”?

2 个答案:

答案 0 :(得分:0)

我使用的是SQL SERVER 2012

create table A (
  id int identity(1,1), 
  data nvarchar(255),
)
;
INSERT A (data)
values ('A_ligne1'),('A_ligne2')

create table B (
  id int identity(1,10), 
  data nvarchar(255),
  date datetime default GetDate(),
)
;
INSERT B (data)
values ('B_ligne1'),('B_ligne2'),('B_ligne3'),('B_ligne4')
;
GO
CREATE VIEW vue_2 
AS 
SELECT A.*, (SELECT TOP 1 date FROM B) AS result
  FROM A 
;

当我做

SELECT  * 
FROM    INFORMATION_SCHEMA.COLUMNS 
WHERE   TABLE_NAME = 'vue_2'

结果集是

TABLE_NAME COLUMN_NAME

  • vue_2 id
  • vue_2 data
  • vue_2结果

那么,你的问题在哪里?

答案 1 :(得分:0)

IronManWK 我找到了适合你的东西。你应该试试这个:

SELECT  M.definition  
FROM    sys.sql_modules M
WHERE   M.object_id = (SELECT V.object_id FROM sys.views V WHERE V.name = 'vue_2')

提醒,'vue_2'是我的第一个答案。