我目前正在编写一个小应用程序,该应用程序采用SQL存储过程提供的数据,并使其可供非技术精明用户轻松导出。我试图让它尽可能通用,因为你应该能够插入任何SP并按照我的模板来设置导出实用程序。我想在从SP本身运行SP之前添加一种获取列名的方法。我原以为你可以用不可能的值运行SP,这样就不会返回任何内容,然后从生成的VB.NET DataTable中获取列。但是,如果没有返回数据,则也不返回列名。如何从SP获取列名而不必对其进行硬编码?
答案 0 :(得分:2)
Table-Valued User-Defined Functions是一种选择吗?
否则:
SELECT Column_Name
from INFORMATION_SCHEMA.COLUMNS
WHERE Table_Schema = 'dbo' and Table_Name = 'Table_Name'
http://msdn.microsoft.com/en-us/library/ms188348.aspx
修改:
即使是空数据集也会将列传递给SqlDataReader。 所以,如果你从SqlCommand对象中获取一个阅读器, 在阅读器上调用GetSchemaTable()以获取DataTable 列元数据。 每行的第一列是返回列的名称。