2011-12-23 4 views
3

Я пытаюсь установить выходной параметр с помощью PetaPoco. Я нашел кого-то, используя этот пример онлайн:PetaPoco и выходные параметры из хранимых процедур?

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

var results = ctx.Query<DBEntity>("exec GetDBEntities @StartIndex, @MaxIndex, @TotalCount = @Total out", 
    id, start, max, total); 

int totalCount = (int)total.Value; 

Однако total.value возвращает нулевое значение, несмотря на то, когда я запускаю это утверждение непосредственно на SQL Server, он возвращает меня 3. Является ли это правильно настроен с PetaPoco? Поддерживаются ли выходные параметры?

Спасибо.

ответ

8

Это поддерживается. Но ваш текущий синтаксис в любом случае неверен.

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

var results = ctx.Query<DBEntity>("exec GetDBEntities @StartIndex, @MaxIndex, @TotalCount OUTPUT", new { StartIndex = start, MaxIndex = max, TotalCount = total}); 

int totalCount = (int)total.Value; 

Что-то вроде этого должно работать. Не совсем уверен в синтаксисе sql, но это должно помочь вам.

+0

как бы написать что-то подобное для MySql? – Dmitry

+0

использовать синтаксис mysql для вызова SP. – Schotime

+0

Что делать, если вам также нужно вернуть значение? –