2008-08-28 16 views

答えて

0

syscommentsを解析せずにどこからクエリしているのか簡単に知ることはできません。 SPを編集してXMLを選択できる場合は、XML_INFOをクエリに追加してスキーマを元に戻すことができます。

1

ADO、ADO.NET、ODBCなどでストアドプロシージャを呼び出すと、タイプを調べることができます。結果のレコードセットには、探しているタイプ情報があります。本当にManagement Studioに制限されていますか?

-1

いつも一意になるように実際のテーブルを使用することができます。それはクルージングですが、オプションです。しかし、これはストアドプロシージャ内では機能しません。

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

それは最もエレガントな解決策ではないのですが、あなたはそれの説明を取得するには、sp_helpを使用し、その後、テーブルにストアドプロシージャの結果を置くためにOPENROWSETを使用することができます。

例えば

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

あなたの最善の策は、関数に、ストアドプロシージャを変更することであろう。しかし、それはあなたの環境がそれを許す場合にのみ機能します。

関連する問題