是否可以在不调用存储过程的情况下从空DataTable中获取存储过程中的列名/类型? 这个存储过程也有我不想提供的参数。
这是可能的还是我必须重新考虑我的做法?
答案 0 :(得分:0)
在Sql Server 2012中,他们引入了一个名为 dm_exec_describe_first_result_set_for_object 的函数,它完全符合您的要求。只要您的过程只返回一个结果集。
SELECT name, system_type_name
FROM sys.dm_exec_describe_first_result_set_for_object
(
OBJECT_ID('master.sys.sp_who'),
NULL
);
另一种选择是使用FMTONLY然后调用该过程。执行此操作将获得具有正确列名称的空数据表。 在这种情况下,您需要提供存储过程的参数。
SET FMTONLY ON;
exec sp_who
从Sql Server 2012开始不推荐使用FMTONLY,因此如果可能的话我会尽量避免使用它。