人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLServerのストアドプロシージャ記述に関する質問があります。

あるプロシージャ内において、別のストアドプロシージャから返される結果セットを受け取って使用したく思います。
たとえば、sp_lockなどのシステムプロシージャや自分で記述したプロシージャの結果セットを、
SELECT文のテーブルのように使ったり、一時表に入れ込んだり、などの方法が便利です。
システムストアドプロシージャも使用したいので、関数(FUNCTION)での代用は出来ません。
ご存知の方、ぜひご教示下さい。ヒントでも結構です。
(sp_tablesをsysobjectsから拾う、などは互換性の問題もあり(ServicePack適用で値が変わるかも...)あまりやりたくありません)

●質問者: pkb_wn
●カテゴリ:コンピュータ
✍キーワード:SELECT ServicePack SQLServer システム システムプロ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● memo77
●60ポイント ベストアンサー

構造を合わせたテーブルを作っておけばINSERT INTO テーブル名 EXEC sp_lock

でインサートできますよ。

↓自作のストアドを公開しているので置いておきます。

http://www31.atwiki.jp/memo77/pages/22.html#id_d2664601


2 ● memo77
●60ポイント

私もテーブル変数が渡せないかと調べたりしたんですが、テーブル変数のスコープはセッションを越えられなくて諦めました。

「ストアドプロシージャ間で結果セットを受け渡す」には、

1.グローバル一時テーブルを使う。

2.親ストアドプロシージャ内で一時テーブルを作って、その一時テーブルがあるのを前提に子ストアドを作る。

3.テーブル名を文字列で渡し、sp_executesqlで動的にSQLを組み立てる。

ぐらいしかなさそうです。

◎質問者からの返答

有難う御座います。出来るんですね!

HPも有難く拝見させて頂きます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ