- - PR -
T-SQLでの結果セット処理
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-03-18 10:53
こんにちは、カーニーです。
MS SQL Server 7.0のT-SQLについて教えてください。 T-SQLスクリプト内で結果セットを戻すストアドプロシージャを実行し、得られた結果セットの各レコードをループで処理したいのです。 例を挙げると、次のようになります。 EXEC sp_tables <結果セットから1レコード取得> WHILE (レコード取得成功) BEGIN <レコードを処理> <結果セットから1レコード取得> END なお環境はSQL Server 7.0ですが、2000で状況が異なるようであれば後学のため、併せて教えていただけると助かります。 どうぞよろしくお願いします。 | ||||||||
|
投稿日時: 2005-03-18 12:35
こんにちは。
カーソル処理はいかがでしょ? | ||||||||
|
投稿日時: 2005-03-18 12:41
残念ながら、ストアドプロシージャでしか取得できない情報があるのです。 | ||||||||
|
投稿日時: 2005-03-18 12:59
テンポラリテーブルにいったん書くとか。
insert into #tmp execute sp_hoge テンポラリ作りたくなかったら OPENROWSET を使うとか。 select * from OPENROWSET('SQLOLEDB','hogeserver';'sa';'password', 'execute sp_hoge') まあ、どちらにしてもさらにカーソルアクセスが必要ですけどね。 | ||||||||
|
投稿日時: 2005-03-18 13:39
2000では『TABLE型』が追加になっています。 テンポラリテーブルの代わりにTABLE型変数が使えますし、TABLE型を戻す関数を用意して、 select * from function_name(variable) のような使い方が可能です。 | ||||||||
|
投稿日時: 2005-03-18 14:07
ばっちりいけました。
いえ、カーソルさえ定義できてしまえば、こっちのもんです。 どうもありがとうございました。 | ||||||||
1
