Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Возврат данных (не набора) из ХП [D7, Oracle 9.2.0.1]


Вольный Стрелок ©   (2005-05-24 16:41:00) 

ХП отрабатывает, в трассировке вижу, что OUT-параметрам данные присваиваются.
При обращении к ХП через dbExpress в OUT-параметре ничего нет.
ХП возвращает не набор данных, а просто единичное значение (придуманный мной код успешности выполнения).
Использую драйвер DBEXPODA версии 2.05

Как узнать, что же вернула ХП?
При работе с FB все прекрасно возвращалось.


Val   (2005-05-25 17:49:00) [1]

1-3 Это ваше многое - попросту нестрогая типизация.
Заменили на варчар и что - вернулся результат?


Вольный Стрелок   (2005-05-25 17:27:00) [2]

> что не логично и что не понятно?
Да многое нелогично и непонятно в Оракле.
1. пример с пропаданием типа в UNION я привел
2. неясно, почему нельзя указать размер CHAR/VARCHAR/NUMBER в параметрах ХП
3. неясно, почему при возвращении из ХП набора данных с определенной структурой рекордов опять все явно описанные в типе рекорда поля NUMBER(x,y) кастрируются до NUMBER без точности
приходится полный изврат творить, чтоб это обойти...

> замени на varchar2
так и сделал, но ведь все равно полумера, а?


ANB   (2005-05-25 10:30:00) [3]


> В ХП OUT-параметр определен как CHAR
- замени на varchar2. Char и должен так вернуть.


Val   (2005-05-25 10:27:00) [4]

:) что не логично и что не понятно?


Вольный Стрелок   (2005-05-24 21:29:00) [5]

> потому что так сделано
Очень логичное объяснение... главное - понятное.
Также, как и доведение всех NUMBER(x,y) полей до NUMBER без точности при использовании UNION - смысл в чем?

DataType для параметра указать можно. А как он повлияет на возвращаемое значение?


Val   (2005-05-24 18:55:00) [6]

>[8] Вольный Стрелок ©   (24.05.05 18:02)
1.судя по всему - максимальная длина для данного типа в данной версии сервера.
2. потому что так сделано. создайте свой тип с размерностью и указывайте его, или через%type для полей таблиц/просмотров.
3. попробуйте сделать пл/скл блок с вызовом этой процедуры - значение возвращается?
4. в данных компонентах не указывается DataType для параметров?


Вольный Стрелок   (2005-05-24 18:02:00) [7]

В отладчике прошелся и опупел - длина результата в параметре 4001 символ.
В ХП OUT-параметр определен как CHAR (указание длины в ХП почему-то не катит - почему, кстати?), поэтому все дополняется пробелами. Но откуда 4001? И почему оно не круглое?


ANB   (2005-05-24 17:44:00) [8]

А у меня на восьмерке работает, только что проверил.
Попробуй в отладчике посмотреть, что лежит в Params.


Вольный Стрелок   (2005-05-24 17:42:00) [9]

пробовал перед ExecSQL ставить
ParamByName( 'LRET' ).ParamType := ptOutput; //ptResult;
- эффект отсутствует для обоих вариантов


ANB   (2005-05-24 17:33:00) [10]


> Что именно?
Params[i].ParamType. Я вообще то ODAC юзаю, там если четко не указать, что нужно вертать параметры, то ничего не вертается.


Вольный Стрелок   (2005-05-24 17:17:00) [11]

Выглядит так, и в 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
Что именно?


Sergey13   (2005-05-24 17:08:00) [12]

>При обращении к ХП через dbExpress в OUT-параметре ничего нет.
А после обращения? Как это вообще выглядит?


evvcom   (2005-05-24 17:02:00) [13]

и не в тему: Oracle пропатчь, а то нарвешься еще на другие неприятности, потеряешь денек-другой.


ANB   (2005-05-24 16:43:00) [14]

А Params настраивал ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо