2009-06-16 23 views
1

ストアドプロシージャの結果をクエリするには?ここでuspの結果からのSQLクエリ

は私の例です:

sp_columsn 'tblSomeTableName' --// Returns a recordset 

select COLUMN_NAME from [sp_columns 'tblSomeTableName'] --// Raises an error saying "Invalid object name 'sp_columns 'tblSomeTableName''." 

答えて

2

限り、あなたはストアドプロシージャの結果の構造を知っているとして、あなたはテーブル(一時、変数など)を作成し、テーブルにストアドプロシージャを実行することができます。

CREATE TABLE #MyTestTable 
(TABLE_QUALIFIER sysname, 
TABLE_OWNER sysname, 
TABLE_NAME sysname, 
COLUMN_NAME sysname, 
DATA_TYPE smallint, 
TYPE_NAME sysname, 
PRECISION int, 
LENGTH int, 
SCALE smallint, 
RADIX smallint, 
NULLABLE smallint, 
REMARKS varchar(254), 
COLUMN_DEF nvarchar(4000), 
SQL_DATA_TYPE smallint, 
SQL_DATETIME_SUB smallint, 
CHAR_OCTET_LENGTH int, 
ORDINAL_POSITION int, 
IS_NULLABLE varchar(254), 
SS_DATA_TYPE tinyint) 

INSERT #MyTempTable 
EXEC sp_columns 'tblSomeTableName' 

SELECT COLUMN_NAME 
FROM #MyTempTable 
WHERE ... 
+1

これが正しい方法です。残念ながら、一時テーブルなしではそれを行うための「直接的な」方法はありません。 – BradC

+0

ループバッククエリーを実行しています – SQLMenace

1

あなたは、ループバッククエリを行うことができますが、それは同じサーバに別の接続を開くことをお勧めすること

SELECT * 
     FROM OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;', 
    'set fmtonly off exec master.dbo.sp_who') 

はこちらを参照:Store The Output Of A Stored Procedure In A Table Without Creating A Table

+0

素敵なトリックですが、私はうんざりします。それはちょうどハックのように感じるが、私はそれが有用な多くの場所を見ることができます... – MatBailie

関連する問題