アプリ版:「スタンプのみでお礼する」機能のリリースについて

タイトルの通り、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)

A 回答 (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

ご参考までに、どうぞ。

参考URL:http://blogs.sqlpassj.org/yoshihirokawabata/arch …
    • good
    • 1
この回答へのお礼

上記のsp_executeを使う事で、希望のクエリを実行できました。有難う御座います。

お礼日時:2007/09/07 18:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す