2008-08-28 91 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

你最好的选择是将存储过程变成一个功能。但是,只有在您的环境允许的情况下才有效。