繁体   English   中英

从SQL Select语句获取列列表

[英]Getting List of Columns from a SQL Select statement

我想知道是否仍然可以从SQL语句获取列的列表。 例如,我有一个简单的SQL语句,例如“ Select FirstName,LastName From Customer”,我想获取该SQL语句中返回的列的列表,在此示例中为FirstName和LastName。 SQL语句是动态的,因此直到运行时才知道。

目前,我通过使用以下方法在数据库中动态创建视图来解决此问题:

SELECT COLUMN_NAME FROM information_schema.columns WHERE table_name = @viewName

比我放弃观点。

仅获取select语句的列似乎有些戏剧性。

在不创建和删除视图的情况下如何进行此操作的任何想法?

提前致谢

我经常使用一种很怪异的技术,那就是选择带有错误条件的

Select ..... Where 1=0

这将以相当快的速度返回一个包含所有列但没有行的结果集。 因此,如果在可视环境中运行,则可以查看所拥有的列,并且如果从程序/脚本运行,则可以使用所有常规列访问工具。

您应该可以为此使用SET FMTONLY

SET FMTONLY ON;
(run your query)
SET FMTONLY OFF;

启用“仅格式”时,SQL Server不会实际运行查询;而是仅运行SQL Server。 它只是返回一个空的结果集,其格式与查询的格式相同(即所有列,只有行)。 然后,您可以使用所使用的任何客户端API来调查列的架构(例如,如果使用的是.NET,则可以使用SqlDataReader .FieldCount,GetFieldType和GetName)。

如我在上面喜欢的文档页面上所述,SQL Server 2012中不建议使用SET FMTONLY 因此,如果您以后将应用程序升级到2012,则他们建议使用sp_describe_first_result_set

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM