获取存储过程table信息
Get stored procedure table information
是否可以在不调用存储过程的情况下从空 DataTable 中的存储过程中获取列 name/types?
这个存储过程也有我不想提供的参数。
这可能吗,还是我必须重新考虑我的方法?
在 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
FMTONLY 自 Sql Server 2012 起已弃用,因此我会尽可能避免使用它。
是否可以在不调用存储过程的情况下从空 DataTable 中的存储过程中获取列 name/types? 这个存储过程也有我不想提供的参数。
这可能吗,还是我必须重新考虑我的方法?
在 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
FMTONLY 自 Sql Server 2012 起已弃用,因此我会尽可能避免使用它。