在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. 在另一个存储过程中未执行存储过程