あるプロシージャ内において、別のストアドプロシージャから返される結果セットを受け取って使用したく思います。
たとえば、sp_lockなどのシステムプロシージャや自分で記述したプロシージャの結果セットを、
SELECT文のテーブルのように使ったり、一時表に入れ込んだり、などの方法が便利です。
システムストアドプロシージャも使用したいので、関数(FUNCTION)での代用は出来ません。
ご存知の方、ぜひご教示下さい。ヒントでも結構です。
(sp_tablesをsysobjectsから拾う、などは互換性の問題もあり(ServicePack適用で値が変わるかも...)あまりやりたくありません)
構造を合わせたテーブルを作っておけばINSERT INTO テーブル名 EXEC sp_lock
でインサートできますよ。
↓自作のストアドを公開しているので置いておきます。
構造を合わせたテーブルを作っておけばINSERT INTO テーブル名 EXEC sp_lock
でインサートできますよ。
↓自作のストアドを公開しているので置いておきます。
私もテーブル変数が渡せないかと調べたりしたんですが、テーブル変数のスコープはセッションを越えられなくて諦めました。
「ストアドプロシージャ間で結果セットを受け渡す」には、
1.グローバル一時テーブルを使う。
2.親ストアドプロシージャ内で一時テーブルを作って、その一時テーブルがあるのを前提に子ストアドを作る。
3.テーブル名を文字列で渡し、sp_executesqlで動的にSQLを組み立てる。
ぐらいしかなさそうです。
有難う御座います。出来るんですね!
HPも有難く拝見させて頂きます。