Форум: "Базы";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
ВнизВозврат данных (не набора) из ХП Найти похожие ветки
← →
Вольный Стрелок © (2005-05-24 16:41) [0]ХП отрабатывает, в трассировке вижу, что OUT-параметрам данные присваиваются.
При обращении к ХП через dbExpress в OUT-параметре ничего нет.
ХП возвращает не набор данных, а просто единичное значение (придуманный мной код успешности выполнения).
Использую драйвер DBEXPODA версии 2.05
Как узнать, что же вернула ХП?
При работе с FB все прекрасно возвращалось.
← →
ANB © (2005-05-24 16:43) [1]А Params настраивал ?
← →
evvcom © (2005-05-24 17:02) [2]и не в тему: Oracle пропатчь, а то нарвешься еще на другие неприятности, потеряешь денек-другой.
← →
Sergey13 © (2005-05-24 17:08) [3]>При обращении к ХП через dbExpress в OUT-параметре ничего нет.
А после обращения? Как это вообще выглядит?
← →
Вольный Стрелок © (2005-05-24 17:17) [4]Выглядит так, и в FB так работает:
with( qry )do begin
CommandType := ctStoredProc;
CommandText := "PR_REPLACENAME";
ParamByName( "CNAMEOLD" ).AsString := qryTerm.FieldByName( "term_name" ).AsString;
ParamByName( "CNAMENEW" ).AsString := "";
ExecSQL;
lOk := ParamByName( "LRET" ).AsString = "T";
end;
Полагаю, что механизм dbExpress должен скрывать особенности реализации отдельных SQL-серверов. Поэтому думал, что и в Oracle должно прокатить, ан нет...
2 evvcom
Где взять патч? У меня Oracle Developers Edition, а с логином от OTN на METALINK с патчами не пускают :(
2 ANB
Что именно?
← →
ANB © (2005-05-24 17:33) [5]
> Что именно?
Params[i].ParamType. Я вообще то ODAC юзаю, там если четко не указать, что нужно вертать параметры, то ничего не вертается.
← →
Вольный Стрелок © (2005-05-24 17:42) [6]пробовал перед ExecSQL ставить
ParamByName( "LRET" ).ParamType := ptOutput; //ptResult;
- эффект отсутствует для обоих вариантов
← →
ANB © (2005-05-24 17:44) [7]А у меня на восьмерке работает, только что проверил.
Попробуй в отладчике посмотреть, что лежит в Params.
← →
Вольный Стрелок © (2005-05-24 18:02) [8]В отладчике прошелся и опупел - длина результата в параметре 4001 символ.
В ХП OUT-параметр определен как CHAR (указание длины в ХП почему-то не катит - почему, кстати?), поэтому все дополняется пробелами. Но откуда 4001? И почему оно не круглое?
← →
Val © (2005-05-24 18:55) [9]>[8] Вольный Стрелок © (24.05.05 18:02)
1.судя по всему - максимальная длина для данного типа в данной версии сервера.
2. потому что так сделано. создайте свой тип с размерностью и указывайте его, или через%type для полей таблиц/просмотров.
3. попробуйте сделать пл/скл блок с вызовом этой процедуры - значение возвращается?
4. в данных компонентах не указывается DataType для параметров?
← →
Вольный Стрелок © (2005-05-24 21:29) [10]> потому что так сделано
Очень логичное объяснение... главное - понятное.
Также, как и доведение всех NUMBER(x,y) полей до NUMBER без точности при использовании UNION - смысл в чем?
DataType для параметра указать можно. А как он повлияет на возвращаемое значение?
← →
Val © (2005-05-25 10:27) [11]:) что не логично и что не понятно?
← →
ANB © (2005-05-25 10:30) [12]
> В ХП OUT-параметр определен как CHAR
- замени на varchar2. Char и должен так вернуть.
← →
Вольный Стрелок © (2005-05-25 17:27) [13]> что не логично и что не понятно?
Да многое нелогично и непонятно в Оракле.
1. пример с пропаданием типа в UNION я привел
2. неясно, почему нельзя указать размер CHAR/VARCHAR/NUMBER в параметрах ХП
3. неясно, почему при возвращении из ХП набора данных с определенной структурой рекордов опять все явно описанные в типе рекорда поля NUMBER(x,y) кастрируются до NUMBER без точности
приходится полный изврат творить, чтоб это обойти...
> замени на varchar2
так и сделал, но ведь все равно полумера, а?
← →
Val © (2005-05-25 17:49) [14]1-3 Это ваше многое - попросту нестрогая типизация.
Заменили на варчар и что - вернулся результат?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c