Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Возврат данных (не набора) из ХП   Найти похожие ветки 

 
Вольный Стрелок ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.052 c
14-1118401829
Тульский
2005-06-10 15:10
2005.07.11
Программирование в MapInfo


11-1102838832
DmiSb
2004-12-12 11:07
2005.07.11
Обработка нажатия клавиш в KOLdateTimePicker


1-1118769268
sofs
2005-06-14 21:14
2005.07.11
кривые колонки в РичЭдит при большом рбъёме инфы


14-1116797256
Piter
2005-05-23 01:27
2005.07.11
Вспоминая старое...


1-1119413392
Сергей Петров
2005-06-22 08:09
2005.07.11
Серое мелькание при перерисовке