Имена создаваемых параметров
От: Аноним  
Дата: 27.10.05 08:30
Оценка:
Есть проблема следующего свойства. Когда мы выполняем команду
return DBManager.SetSpCommand("MANAGE_ACTIVITIES_PKG.READ_ACTIV_TAB",
    DBManager.Parameter("P_act_TYPE", (int)actType)....

то в DBManager создаётся параметр с именем "P_act_TYPE". А при Derive Parameters получаем из базы этот же параметр, но с именем "P_ACT_TYPE". Когда поисходит поиск параметров и сравнение их имён получается, что параметр "P_act_TYPE" неравен параметру "P_ACT_TYPE" и естественно происходит ошибка. Может в таком случае стоит добавить в провайдер параметр, который указывал бы производить сравнение с учётом регистра или без? Или не в провайдер...
Re: Имена создаваемых параметров
От: IT Россия linq2db.com
Дата: 28.10.05 00:34
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>то в DBManager создаётся параметр с именем "P_act_TYPE". А при Derive Parameters получаем из базы этот же параметр, но с именем "P_ACT_TYPE". Когда поисходит поиск параметров и сравнение их имён получается, что параметр "P_act_TYPE" неравен параметру "P_ACT_TYPE" и естественно происходит ошибка. Может в таком случае стоит добавить в провайдер параметр, который указывал бы производить сравнение с учётом регистра или без? Или не в провайдер...


Там делается прямой вызов ADO.NET метода, так что...
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Имена создаваемых параметров
От: Аноним  
Дата: 10.11.05 16:23
Оценка:
Здравствуйте, IT, Вы писали:

IT>Там делается прямой вызов ADO.NET метода, так что...

наверно я всё-таки не правильно описал ситуацию

есть метод

private IDbDataParameter[] CreateSpParameters(string spName, object[] parameterValues)

в нём получаем список параметров хранимой процедуры
commandParameters = GetSpParameterSet(spName, true);

затем последовательно сравниваем имена параметров, которые были получены из ХП и имена параметров, которые находятся в массиве parameterValues (эти параметры мы создали при вызове, например, DBManager.SetSpCommand(...))
if (name == p.ParameterName)
{
    param.Value = p.Value;
    found = true;

    break;
}

так вот, если в SetSpCommand мы создали параметр с именем "param1", а из ХП получили параметр "PARAM1", то переменная found после выполнения предыдущего куска кода будет равна false и выполнится следующий код
if (found == false && (
    param.Direction == ParameterDirection.Input || 
    param.Direction == ParameterDirection.InputOutput))
{
    param.SourceColumn = name[0] == '@'? name.Substring(1): name;
}

но param.Value останется пустым и при выполнении запроса в базу будет отправлен null в качестве значения параметра "PARAM1", хотя парамерт "param1" был нами проинициализирован.

Вот я и имел ввиду, что при сравнении

name == p.ParameterName

может можно было бы придумать механизм, что бы при определённых услосиях сравнение шло case insensitive?
Re[3]: Имена создаваемых параметров
От: Аноним  
Дата: 14.11.05 15:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, IT, Вы писали:


IT>>Там делается прямой вызов ADO.NET метода, так что...

так какой будет ответ на моё предыдущее письмо?
Re[4]: Имена создаваемых параметров
От: IT Россия linq2db.com
Дата: 15.11.05 00:39
Оценка:
Здравствуйте, <Аноним>, Вы писали:

IT>>>Там делается прямой вызов ADO.NET метода, так что...

А> так какой будет ответ на моё предыдущее письмо?

Ну как бы положительный
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.