2008-08-28 44 views

回答

0

沒有簡單的想法,不解析syscomments來查看它從哪裏查詢什麼。如果您可以編輯SP來選擇XML,則可以將XML_INFO附加到查詢中以獲取架構。

1

儘管如果您通過ADO,ADO.NET,ODBC或類似方法調用存儲過程,您還是會看看類型:結果記錄集具有您正在查找的類型信息。你真的只限於管理工作室嗎?

-1

你總是可以使用一個真正的表格garryteed是唯一的。這是一個混亂,但它是一個選項。這在存儲過程中不起作用。

if exists (select * from sys.tables where name = 'tmp_TableName') 
    drop table tmp_TableName 
go 
select * into tmp_TableName from MyTable 

--do some stuff 

go 
if exists (select * from sys.tables where name = 'tmp_TableName') 
    drop table tmp_TableName 
go 
0

其實,你可以從SP中做到這一點:

EXEC ('if exists (select * from sys.tables where name = ''tmp_TableName'') drop table tmp_TableName') 

EXEC ('select * into tmp_TableName from MyTable') 

-- Grab the column types from INFORMATION_SCHEMA here 

EXEC ('if exists (select * from sys.tables where name = ''tmp_TableName'') drop table tmp_TableName') 

雖然,我認爲必須有一個更好的辦法。

0

這不是最優雅的解決方案,但可以使用OPENROWSET將存儲的proc結果放入表中,然後使用sp_help獲取它的描述。

select * into tmp_Results 
from openrowset('SQLOLEDB.1' 
       , 'Server=your_server_name;Trusted_Connection=yes;' 
       , 'exec your_stored_proc') 
exec sp_help 'tmp_Results' 
drop table tmp_Results 
1

你最好的選擇是將存儲過程變成一個功能。但是,只有在您的環境允許的情況下才有效。