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


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

回答の条件
  • 1人2回まで
  • 登録:2007/11/01 18:55:06
  • 終了:2007/11/01 23:19:27

ベストアンサー

id:memo77 No.1

memo77回答回数238ベストアンサー獲得回数202007/11/01 21:08:16

ポイント60pt

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

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

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

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

その他の回答(1件)

id:memo77 No.1

memo77回答回数238ベストアンサー獲得回数202007/11/01 21:08:16ここでベストアンサー

ポイント60pt

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

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

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

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

id:memo77 No.2

memo77回答回数238ベストアンサー獲得回数202007/11/01 21:45:29

ポイント60pt

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

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

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

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

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

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

id:HISI

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

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

2007/11/01 23:18:32
  • id:memo77
    あ、間違えたかも。
    知りたいのは「ストアドプロシージャ間で結果セットを受け渡す」ことでしょうか。
    私のひとつめの回答はシステムストアドプロシージャの結果をテーブルに挿入する方法なので、勘違いならオープンしなくて結構です。

    ふたつめの回答は「ストアドプロシージャ間で結果セットを受け渡す」に関連しますが、ズバリではないです。
  • id:HISI
    >>memo77さん
    1つめのほうのご回答で、ズバリ!です。
    あるストアドの中で
    sp_columnsから、テーブルの列名を引っこ抜いて利用しようと考えておりました。
  • id:memo77
    マッチする回答でよかった(^-^)


    いるか賞ありがとうございます。なんか久しぶりに貰えてうれしいです。
    ストアドがパラメーターにテーブル変数渡せれば最強なんですけどね。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません