2008-08-28 4 views

Antwort

0

Kein einfacher Weg in den Sinn kommt ohne syscomments zu analysieren, um zu sehen, was es von wo abfragt. Wenn Sie den SP bearbeiten können, um XML auszuwählen, können Sie XML_INFO an die Abfrage anhängen, um das Schema zurückzuerhalten.

1

Sie sehen sich die Typen zwar an, wenn Sie die gespeicherte Prozedur über ADO, ADO.NET, ODBC oder ähnliches aufrufen: Die resultierenden Recordsets haben die gesuchte Information. Sind Sie wirklich auf Management Studio beschränkt?

-1

Sie könnten immer eine tatsächliche Tabelle verwenden, die eindeutig eindeutig ist. Es ist ein Klud, aber es ist eine Option. Dies funktioniert jedoch nicht in einem gespeicherten Proc.

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

Eigentlich kann man es innerhalb einer SP tun:

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') 

Obwohl ich dort denken muss einen besseren Weg geben.

0

Es ist nicht die eleganteste Lösung, aber Sie könnten OPENROWSET verwenden, um die gespeicherten Proc-Ergebnisse in eine Tabelle zu schreiben, und dann sp_help verwenden, um eine Beschreibung zu erhalten.

zB

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

Ihre beste Wette wäre, um die gespeicherte Prozedur eine Funktion zu ändern. Aber das funktioniert nur, wenn es Ihre Umgebung erlaubt.

Verwandte Themen