0
Моей хранимой процедуры: -Отправка выходных параметров и получение нескольких наборов данных из хранимой процедуры C#
DECLARE @return_value int,
@Sum int,
@Total float
EXEC @return_value = [dbo].[mysamplesp]
@sd = '2014-09-23 00:00:00.000',
@ed = '2014-09-30 00:00:00.000',
@ID = '40494',
@sp = NULL,
@Ct = NULL,
@GD = NULL,
@Sum = @Sum OUTPUT,
@Total = @Total OUTPUT
SELECT @Sum as N'@Sum',
@Total as N'@Total'
SELECT 'Return Value' = @return_value
результата выполнения; -
dataset1-
col1 col2 col3 col4 col5
datase2-
@Sum @Total
Набор данных 3-
return_value
Моя C# реализация: -
Dictionary<string, object> storage = new Dictionary<string, object>();
storage.Add("sd", "2014-09-23 00:00:00.000");
storage.Add("ed", "2014-09-30 00:00:00.000");
storage.Add("ID", "40494");
storage.Add("Sp", null);
storage.Add("Ct", null);
storage.Add("GD", null);
storage.Add("Sum", null);
storage.Add("Total", null);
var spReturn = new Data(Data.DBKEY).ExecuteSotredProcedure("mysamplesp", storage);
. . .
public int ExecuteSotredProcedure(string qryName, Dictionary<string, object> parameters)
{
using (SqlConnection con = new SqlConnection(_conStr))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(qryName, con))
{
cmd.CommandType = CommandType.StoredProcedure;
foreach (var key in parameters.Keys)
{
cmd.Parameters.AddWithValue(key, parameters[key] ?? DBNull.Value);
}
return cmd.ExecuteNonQuery();
}
}
}
Q1: Как отправить выходные паразиты в Sp с помощью словаря на C#? возможное ?
Q2: Как получить несколько наборов данных в результате SP?
Я добавил код, как показано ниже - 'cmd.Parameters [ "Sum"] Направление = ParameterDirection. .Вывод; cmd.Parameters ["Total"]. Direction = ParameterDirection.Output; 'Но получение' String [6]: свойство Size имеет недопустимый размер 0.' Ошибка в 'var reader = cmd.ExecuteReader(); ' – flute
Попробуйте установить свойство' Size' ваших выходных параметров, как: 'cmd.Parameters [" Sum "]. Размер = 5'. См. [Эту ссылку] (http://stackoverflow.com/questions/17494990/the-size-property-has-an-invalid-size-of-0) – MantasG
Но я не могу получить 2-й набор данных из SP. Читатель показывает только один (один набор из 4 столбцов). Даже читатель.NextResult() не смог найти его. – flute