質問 |
||
| QNo.3320194 | 【Transact-sql】 execの結果をoutputパラメータに持たせたい | |
|---|---|---|
| 質問者:yamachan_tomo |
タイトルの通り、execの結果をoutputパラメータに持たせたいのですが、 どうすればご存知の方、ご教授お願いします。以下のように、count(*)の結果を持たせたいです。以下にサンプルコードを記載しました。 ---ストアドabc--- ( @aWork int output, @bWork int output, @cWork int output, @IDs varchar ) declare @Sql1 varchar(500) declare @Sql2 varchar(500) declare @Sql3 varchar(500) declare @IDs varchar(500) set = '1,2,3' set @Sql1 = 'select count(*) from a where id = ' + IDs -- @aWork = exec(@Sql1)としたい exec(@Sql1) set @Sql2 = 'select count(*) from b where id = ' + IDs -- @bWork = exec(@Sql2)としたい exec(@Sql2) set @Sql3 = 'select count(*) from c where id = ' + IDs -- @cWork = exec(@Sql3)としたい exec(@Sql3) |
|
困り度:
|
||
| 質問投稿日時: 07/09/06 12:15 |
||
回答良回答20pt |
|
| ANo.1 | EXECでSQLを動かした場合は、COUNTの結果は取れないですね。 select @aWork = count(*) from a where id = @IDs でやれば、OUTPUTで結果を返すんですが、どうしてもEXECじゃ なきゃダメであれば、EXECじゃなく、sp_executesqlを使って、 下記のようにしてみたらどうでしょう? -- 実行 EXEC sp_executesql N'select @aWork = count(*) from a where id = @IDs', N'@aWork int OUTPUT, @IDs varchar(max)', @aWork output, @IDs ご参考までに、どうぞ。 |
|---|---|
| 回答者:kero_mio | |
| 種類:回答 どんな人:経験者 自信:参考意見 |
|
| 回答日時: 07/09/06 16:51 |
|
| |
| 参考URL: | http://blogs.sqlpassj.org/yoshihirokawabata/archive/2004/11/15/5891... |
| この回答へのお礼 | 上記のsp_executeを使う事で、希望のクエリを実行できました。有難う御座います。 |