通过T-SQL获取结果集的列名

时间:2015-02-13 19:50:15

标签: tsql resultset

是否有办法使用适用于2012年以前版本的Microsoft SQL Server的T-SQL来获取任意查询将返回的列名?

什么行不通:

  • sys.columns和INFORMATION_SCHEMA.COLUMNS非常适合获取表或视图的列列表,但不适用于任意查询。
  • sys.dm_exec_describe_first_result将是完美的,除了在SQL Server 2012中添加了此管理功能。我正在编写的内容需要向后兼容SQL Server 2005.
  • 自定义CLR功能可以轻松提供此信息,但会在服务器端引入部署复杂性。我宁愿不走这条路。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

只要任意查询有资格用作嵌套查询(即没有CTE,唯一列名等),这可以通过将查询的元数据加载到临时表中,然后通过{检索列详细信息来实现。 {1}}:

sys.tables

感谢@ MartinSmith建议采用这种方法!