Sql-Server

獲取儲存過程結果列類型

  • March 22, 2022

我正在嘗試獲取儲存過程返回的任何內容,包括列名及其類型。我可以用表來做到這一點,但我無法為儲存過程弄清楚。我嘗試了sp_columns但只設法使它適用於表格。

我也嘗試過這樣的事情,但我不確定我應該與什麼相匹配。

SELECT * 
FROM SYS.PROCEDURES (NOLOCK) AS AA
INNER JOIN SYS.SCHEMAS (NOLOCK) AS BB ON (AA.schema_id = BB.schema_id)
INNER JOIN SYS.COLUMNS (NOLOCK) AS CC ON (AA.object_id = CC.object_id)

例如:

USER_ID VARCHAR(200)

我只需要儲存過程返回的列名及其數據類型。SQL Server 版本是 2014,如果重要的話。

有任何想法嗎?謝謝。

專門針對對象,有一個名為sys.dm_exec_describe_first_result_set_for_object的 DMV ,如果 SQL Server 可以確定它應該是什麼(例如動態 SQL 不會返回有效結果),它將描述第一個結果集。

專門針對 T-SQL 或批處理相關的項目有不同的 DMV 和伴隨的系統儲存過程。DMV 是sys.dm_exec_describe_first_result_set,與 dmv 並行的儲存過程是sp_describe_first_result_set

您應該能夠為此使用新的系統儲存過程sp_describe_first_result_set-有關詳細資訊,請參閱 MSDN 文件

EXEC sp_describe_first_result_set N'YourStoredProcedureNameHere'

引用自:https://dba.stackexchange.com/questions/135365