Proc не возвращает значение выходного параметра с помощью PetaPoco - PullRequest
1 голос
/ 17 января 2012

Если я выполняю это с SQL Server, я получаю выходной параметр без проблем:

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

Выходной параметр возвращает 18. Однако, если я делаю это из PetaPoco, выходной параметр возвращает ноль.Я попробовал эти комбинации:

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;

Три попытки, которые я попробовал, провалились.Они работали, но я не знаю, что изменилось ... внезапно, теперь я получаю эти ошибки ...

Есть идеи почему?

Ответы [ 2 ]

3 голосов
/ 18 января 2012

Результат сработал, как только я позвонил ToList();Я где-то читал, что выходные параметры не возвращают выходное значение, когда считыватель все еще открыт, что должно было иметь место.

0 голосов
/ 17 января 2012

Два при символов в @@ TotalCount - разве это не мешает вам продолжить?

или последнее предположение:

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