在Management Studio中執行存儲過程以獲取結果集的數據類型時,有什麼方法可以回來嗎?我正在尋找類似於將表名傳遞給sp_help時的功能的東西如何在執行存儲過程後識別數據類型?
3
A
回答
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
你最好的選擇是將存儲過程變成一個功能。但是,只有在您的環境允許的情況下才有效。
相關問題
- 1. 如何在存儲過程中識別當前數據庫?
- 2. 在MySQL存儲過程中無法識別的數據類型錯誤
- 3. 如何識別調用存儲過程
- 4. 在Activiti中通過執行標識識別任務類型
- 5. 如何在VB.NET執行存儲過程
- 6. 如何通過數據庫鏈接執行Oracle存儲過程
- 7. 在存儲過程中執行帶參數的存儲過程
- 8. PostgreSQL:如何識別數據類型?
- 9. JdbcTemplate如何識別數據類型?
- 10. 識別數據類型
- 11. 識別cookie數據類型
- 12. 如何爲另一個數據庫執行存儲過程?
- 13. 如何使用後臺工人類在存儲過程執行在C#
- 14. 爲viewmodel類執行存儲過程returntype
- 15. 如何執行oracle存儲過程?
- 16. 如何連續執行存儲過程?
- 17. 性別存儲和數據類型
- 18. 將數據類型nvarchar轉換爲int時出錯 - 執行存儲過程時
- 19. 「將數據類型nvarchar轉換爲bigint時出錯」執行存儲過程時
- 20. 根據條件執行存儲過程
- 21. SQL Server 2012:動態識別正在執行存儲過程的用戶名稱
- 22. fortran:在變量存儲在內存中後,識別變量*的內在類型
- 23. 執行存儲過程OnClick
- 24. 執行存儲過程
- 25. 執行SQL存儲過程
- 26. 執行存儲過程
- 27. Rails執行存儲過程
- 28. 當執行存儲過程
- 29. 執行存儲過程
- 30. 在另一個存儲過程中未執行存儲過程