Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
6-1112762797
Solidol
2005-04-06 08:46
2005.07.11
Прямой запуск файла из TWebBrowser1 ..


6-1111961987
Змей
2005-03-28 02:19
2005.07.11
Socket Connect в домашних условиях :)


3-1117314160
Игорь П
2005-05-29 01:02
2005.07.11
Добавление поля в таблицу Paradox в режиме выполнения


1-1118501753
newindelphi
2005-06-11 18:55
2005.07.11
quickrep, detailband and frames


1-1118384214
Elena_
2005-06-10 10:16
2005.07.11
Как динамически создать процедуру OnMouseDown





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский