Sql-Server
我們如何獲得過程的輸出欄位?
我已經編寫了一個程序,但我想在不執行該過程的情況下找出輸出中的哪些列(欄位)?
目前您已經標記了sql-server-2012和sql-server-2008。
如果 2012 是正確的,您可以使用
sp_describe_first_result_set
受到一些限制。如果您的程序不符合條件,
sp_describe_first_result_set
或者您執行的版本不支持它,您將不得不檢查原始碼 - 我首選的提取方法是object_definition()
函式,儘管許多人更喜歡sp_helptext
OPENROWSET從任意查詢返回一個表。那個查詢可以
exec some_procedure
。結果可用於使用select .. into
語法定義新表。可以檢查這個新表的元數據以找到 SP 輸出的定義。drop procedure if exists SomeProc; go create or alter procedure SomeProc as begin select a = CONVERT(bit, 1), b = CONVERT(int, 2) end go drop table if exists SomeTable; go select * into SomeTable from openrowset ( 'SQLNCLI', 'Server=localhost;Trusted_Connection=yes;', 'EXEC SomeProc' ); go select * from SomeTable; go select * from sys.all_columns where object_id = OBJECT_ID('SomeTable');