1

これを SQL Server から実行すると、問題なく出力パラメーターを取得できます。

exec [dbo].[SelectByRecipient] @0, @1, @2, @TotalCount = @3 output

出力パラメーターは 18 を返します。しかし、PetaPoco からこれを行うと、出力パラメーターは null を返します。これらの組み合わせを試しました:

var total = new SqlParameter("TotalCount", System.Data.SqlDbType.Int);
total.Direction = System.Data.ParameterDirection.Output;

var results = ctx.Query<X>("exec [dbo].[SelectByRecipient] @0, @1, @2, @TotalCount = @3 output", var0, var1, var2, total);
//var results = ctx.Query<X>("exec [dbo].[SelectByRecipient] @0, @1, @2, @@TotalCount = @3 output", var0, var1, var2, total);
//var results = ctx.Query<X>("exec [dbo].[SelectByRecipient] @0, @1, @2, @3 output", var0, var1, var2, total);
//var results = ctx.Query<X>("exec [dbo].[SelectByRecipient] @0, @1, @2, @3 out", var0, var1, var2, total);

//Blows up because total.Value is null
var totalCount = (int)total.Value;

私が試した3つのステートメントは失敗します。それらは機能していましたが、何が変わったのかわかりません...突然、これらのエラーが発生しました...

理由はありますか?

4

2 に答える 2

3

私が呼び出すと、結果はうまくいきましたToList()。リーダーがまだ開いているときに出力パラメーターが出力値を返さないことをどこかで読みました。

于 2012-01-18T03:00:09.363 に答える
0

@@TotalCountに2 つのアットマークがあります - これが続行の妨げになっているのではありませんか?

または最後の仮定:

var results = ctx.Query<X>("exec [dbo].[SelectByRecipient] @0, @1, @2, @3 = @TotalCount output", var0, var1, var2, total);
于 2012-01-17T10:44:05.637 に答える