就像我们查询表中没有列的查询一样,是否有任何类似的查询来查找Sql Server视图中的列总数?
更简单的是使用sys.columns。
select count(*)
from sys.columns
where OBJECT_ID = OBJECT_ID('YourView')
与Larnu的评论相似,我更倾向于使用Table-Valued-Function
例
Declare @tsql nvarchar(max) = N'Select * from YourView_Table_Or_Query'
Select column_ordinal
,name
,system_type_name
From sys.dm_exec_describe_first_result_set(@tsql,null,null )
- 或者伯爵
Select ColumnCnt=count(*)
From sys.dm_exec_describe_first_result_set(@tsql,null,null)
除了相当笨拙的程序sp_describe_first_reuslt_set
,你可以使用XML的通用能力:
SELECT (SELECT TOP 1 * FROM YourView FOR XML RAW, ELEMENTS XSINIL ,TYPE).value('count(/row/*)','int');
编辑:忘了添加ELEMENTS XSNIL
,这将省略值为NULL
的列,否则......