ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

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を使う事で、希望のクエリを実行できました。有難う御座います。