2016-03-28 81 views
4

如果我有一个随机查询,并希望从该查询返回的列名:获取从动态查询选择列名在SQL Server

SELECT 1 ONE, 2 TWO, 'THREE' THREE 

我怎样才能返回列的名字呢?甚至可能是列数据类型。

我可以在c#中做到这一点,但我正在寻找一种方法来完成这一切纯粹是在Ms Sql中。

这是可能的,如果是这样怎么样?

我需要创建一个临时表,然后检查信息模式表吗?或者我能以另一种方式做到吗?

+0

即时通讯如何在旧的SQL版本中做到这一点 – Sherlock

+0

@Katana我在我的答案中增加了一行,可能有所帮助。 – DavidG

+0

@DavidG感谢我的额外知识,我之前在遇到实体框架与我的SP之间的通信问题时添加了FMTONLY – Sherlock

回答

5

您可以使用sp_describe_first_result_set来描述从任意SQL语句返回的列。例如:

EXEC sp_describe_first_result_set @tsql = 'SELECT 1 ONE, 2 TWO, ''THREE'' THREE' 

您会得到类似fiddle的结果。

对于旧版本的SQL Server,您还可以查看SET FMTONLY ON