从空白存储过程数据集中获取列名称

时间:2011-10-31 17:45:50

标签: sql-server vb.net

我目前正在编写一个小应用程序,该应用程序采用SQL存储过程提供的数据,并使其可供非技术精明用户轻松导出。我试图让它尽可能通用,因为你应该能够插入任何SP并按照我的模板来设置导出实用程序。我想在从SP本身运行SP之前添加一种获取列名的方法。我原以为你可以用不可能的值运行SP,这样就不会返回任何内容,然后从生成的VB.NET DataTable中获取列。但是,如果没有返回数据,则也不返回列名。如何从SP获取列名而不必对其进行硬编码?

1 个答案:

答案 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   列元数据。   每行的第一列是返回列的名称。