ストアドプロシージャの結果をクエリするには?ここで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''."
ストアドプロシージャの結果をクエリするには?ここで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''."
限り、あなたはストアドプロシージャの結果の構造を知っているとして、あなたはテーブル(一時、変数など)を作成し、テーブルにストアドプロシージャを実行することができます。
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 ...
あなたは、ループバッククエリを行うことができますが、それは同じサーバに別の接続を開くことをお勧めすること
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
素敵なトリックですが、私はうんざりします。それはちょうどハックのように感じるが、私はそれが有用な多くの場所を見ることができます... – MatBailie
これが正しい方法です。残念ながら、一時テーブルなしではそれを行うための「直接的な」方法はありません。 – BradC
ループバッククエリーを実行しています – SQLMenace