SubSonic: получение значения параметров OUT хранимой процедуры - PullRequest
2 голосов
/ 31 мая 2009

Я люблю твой инструмент. Я часто его использовал, но только сегодня столкнулся с проблемой ...

Я написал хранимую процедуру, которая возвращает некоторые значения через параметры OUT, но SubSonic, похоже, не генерирует выходные параметры метода хранимой процедуры. Например, для SPI, как это:

CREATE PROC dbo.MyProc @ param1 int, @ param2 int out, @ param3 varchar (150) out

Генерирует подпись

SPs.MyProc (int? Param1, int? Param2, строка param3

Я ожидаю, что это сгенерирует это

SPs.MyProc (int? Param1, out int? Param2, out string param3)

Что ж, учитывая, что метод на самом деле просто настраивает SP и фактически не выполняет его, я ожидал, что Subsonic сгенерирует это

SPs.MyProc (int? Param1, ref int? Param2, ref string param3)

Как вы, ребята, решаете эту проблему? Уже есть что-то подобное в Subsonic, и я просто пропустил это?

Ответы [ 4 ]

2 голосов
/ 31 мая 2009

ИСТОЧНИК Вы можете получить доступ к параметрам OuPut SP в SubSonic, используя StoredProcedure.OutputValues;

Folowing - это фрагмент кода для доступа к параметрам OutPut SP, здесь я подал в суд на SP «UspTestOutPut»:

StoredProcedure s = SPs.UspTestOutPut(”10″, “15″);
s.Execute();
s.OutputValues.ForEach(delegate(object objOutput)
{
    Response.Write(”OutPutValues=”+objOutput.ToString());
});
0 голосов
/ 26 июля 2010

Я использую дозвуковой сервер и сервер Sqlserver 2005. для функциональности подкачки я передаю текущую страницу и размер страницы в качестве входных параметров. Чтобы получить общее количество записей, я использую переменную параметра @TotalCount int OUTPUT.

в StoresPrecedure, я использую так:

Выберите * из TestTable, где PageSize = @ PageSize и CurrentPage = @CurrentPage - он получает текущие записи страницы.

Set @Query = "Вставить ....."

EXEC sp_executesql @ Query

SET @TotalCount = @@ Rowcount - общее количество записей, затронутых оператором вставки

в моем C # .net - файле дозвуковых классов, я использую GetDataSet () для получения результата DataSet и OutputValues ​​[0] для получения значения из выходного параметра.

      DataSet results = sp.GetDataSet(); // current page records

      int totalCnt = Convert.ToInt32(sp.OutputValues[0].ToString()); // total number of
                                                             //records from outputparameter
0 голосов
/ 28 августа 2009

Кажется, что использование OutputParameters не работает в сочетании с .GetReader (), а только с .Execute ().

Я не могу получить записи из базы данных в сочетании с использованием параметров OUTPUT.

Например, у меня есть хранимая процедура, которая возвращает список информационных бюллетеней из базы данных, но я хочу использовать функцию подкачки в SQL Server 2005. Поэтому я предоставляю pageSize и фактическую страницу, которую я хочу видеть. В той же процедуре я хочу подсчитать количество доступных страниц и вернуть их, используя выходную переменную.

Я не заставляю его работать. Список с OutputParameters содержит 1 элемент, но значение всегда равно NULL.

0 голосов
/ 31 мая 2009

Вы должны создать экземпляр SP как объект, а затем запустить его - он передаст вам параметр OUTPUT в качестве свойства.

...