- - PR -
ストアドプロシジャのストアドプロシジャって可能ですか?
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-14 17:37
いつもお世話になっております。
複数のビューを作成し、ビューを元にしたビューからデータを取得する プログラムを作成しました。 ところが、処理が遅くなるので、最初に条件指定で対象レコードを 選択してから処理してほしいという依頼が来ました。 ところが、最初の条件指定は画面から入力するもので、動的に変わるので、 最後のビューをプログラムで呼び出す時にときに、Whereで条件指定していました。 最初に選択するということになると、思いつくのはパラメータ付きの ストアドプロシジャですが、ストアドプロシジャのストアドプロシジャって できるのでしょうか?試しにやってみたのですが、うまくいきません。 実行時に 'System.Data.SqlClient.SqlException' のハンドルされていない例外が system.data.dll で発生しました。 追加情報 : システム エラーです。 というエラーがでます。 ストアドプロシジャのストアドプロシジャって可能なのでしょうか? また可能だとしても、パラメータはどこであたえるのでしょうか? 実際に読み込むのは最後のストアドプロシジャになるのに、 最初のストアドプロシジャにパラメータを与えることになりますよね〜。 こんなことって不可能なのでしょうか? ちなみに、試しにやってみたプログラムは Dim wsql As String = "s_Test2" Dim selectcmd As SqlCommand = New SqlCommand(wsql, cn) selectcmd.CommandTimeout = 15 selectcmd.CommandType = CommandType.StoredProcedure Dim dadpt As SqlDataAdapter = New SqlDataAdapter(selectcmd) Dim rsw As DataSet = New DataSet dadpt.Fill(rsw) MsgBox(rsw.Tables(0).Rows.Count) MsgBox(rsw.Tables(0).Rows(0)("Keiyaku_No")) です。 ストアドプロシジャは CREATE PROCEDURE s_Test1 AS SELECT *FROM Seikyu_TR GO CREATE PROCEDURE s_Test2 AS Select * FROM s_Test1 GO の2つです。 どなたかご存知の方、おられましたら、ぜひ。お教えください。 | ||||||||
|
投稿日時: 2005-07-14 18:07
言葉の意味がわかりません。 ストアドプロシージャ内で別のストアドプロシージャを使用することが 可能ですか? って聞いていますか?
ってかかれているのですが、DBMSは何を使用されています? | ||||||||
|
投稿日時: 2005-07-14 18:17
作成したストアドプロシジャを元に(FROMで使用)ストアドプロシジャを作成して
実行することが可能かということです。ビューでは可能ですよね。 ちなみにDBはSQL-Server2000です。 | ||||||||
|
投稿日時: 2005-07-14 18:29
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_fa-fz_4ox9.asp SQLServerでFromに指定できるものが書いてあります。 ------------------------ 以下投稿後追加。 ストアドを作って、プログラムからコールしたいって話ですか? ただ、ストアドは行配列を返してもらうイメージで作成して、ストアド実行することで 得たいデータ群を取りたい・・・って感じです? だとしたら私かなぁり読み間違えました。すみません。 [ メッセージ編集済み 編集者: 夏椰(かや) 編集日時 2005-07-14 18:36 ] | ||||||||
|
投稿日時: 2005-07-15 09:00
ゆうパパさん、お早うございます。
『ちなみに』じゃなくて、「DBMSは何か」「バージョンはいくつか」によって、『可能』な事は変わってくるんですから、そういう事は最初に明記しましょう。 ちなみに、SQLServer 2000 では、テーブル型を返す関数が使えますので、以下のような使い方が出来ます。
|
1