![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Орокол 8.1.7 + Дельфи 5, хранимые процедуры в пакетах
danilka © (2002-10-21 08:36:00)в моей схеме есть пакет IAS, в нем лежат 2 процедуры MOVEUP с одним параметром и CLIENTSORT без параметров.
первая у меня пускается таким образом:
sp:=TStoredProc.Create(nil);
sp.DatabaseName:=sbts.fdb;
sp.StoredProcName:="IAS.MOVEUP";
select_id:=q_client.fieldbyname("clientid").asinteger;
sp.Params.CreateParam(ftInteger,"client_",ptInput).asinteger:=select_id;
try
sp.ExecProc;
except raise
end;
sp.free;
вторая вот-таким:
sp:=TStoredProc.Create(nil);
sp.DatabaseName:=sbts.fdb;
sp.StoredProcName:="IAS.CLIENTSORT";
try
sp.ExecProc;
except raise
end;
sp.free;
первая проходит ровно, вторая ругается на орокол-библиотеку oraclient8.
ставлю в настройках BDE библиотеку от седьмого оракла: sqlora32.dll - процедуры работают без проблем, но с этой библиотекой не работают блоб-поля. :(((
причем, когда-то давно, у меня уже были проблемы с хранимыми процедурами в пакетах, когда я эти процедуры вешал на форму, как только я стал их создавать динамически проблемы прекратились, а сейчас опять что-то глючит. :((
Что делать?
danilka (2002-10-22 10:05:00) [1]Это глюк БДЕ, но здесь есть и вина оракла. Пускаешь вот-такой запрос:
SELECT ARGUMENT_NAME, POSITION, DATA_TYPE, IN_OUT,
DATA_LENGTH, DATA_SCALE FROM ALL_ARGUMENTS
WHERE OBJECT_NAME = "CLIENTSORT" AND PACKAGE_NAME = "IAS"
По-идее это процедура без параметров, следовательно в результате запроса должно быть ноль строк, а он возвращает одну, с пустым ARGUMENT_NAME, POSITION=1 и IN_OUT="IN".
Видимо БДЕ на этом и обламывается - раз есть параметр IN, надо в него что-то передать.
Думаю, в огромном большинстве случаев используются процедуры или функции с параметрами, поэтому такой глюк мало у кого возникает. Вобщем, я просто добавил 1 параметр, который в самой процедуре нигде не использую - теперь все нормально пашет.
А на счет БДЕ от 6 дельфей, он : 6-х и в 7-х дельфях такой-же как в 5-м, версии 5.1, Клиент и сервер один и тот-же: 8.1.7
Erik (2002-10-21 17:07:00) [2]Можно поробовать NCOCI8 Library, V 1.0.2 http://www.da-soft.com
у меня стоит. Очень похоже на BDE есть все свойства. Плюс мастер для замены BDE на NCOCI8.
Shadi (2002-10-21 13:41:00) [3]Может еще и сама BDE глюкать. Я пробовал ставить BDE от третей Delphi и потом накатывал update 5. Оказалось в этом есть свои "прелести":((( Лучше сразу от 6 Delphi BDE!!!
Еще может быть из-за самого клиента оракла! У меня server стоит 8.1.7, а на клиентах стоит 8.0.5. И здесь тоже могут быть свои подводные камни...
danilka (2002-10-21 12:01:00) [4]К сожалению не подойдет, по-крайней мере не в ближайшем будущем. Слишком много в нашей фирме проектов в том-числе и долгосрочных, которые работают несколько лет. Все работает под BDE, разнобоя быть не должно, а переводить уже работающие вещи, в которых исходники весят по 5 мегабайт на что-то другое - самоубийство. Наверняка где-нибудь стрельнет. у заказчика.
AlteFriz (2002-10-21 11:09:00) [5]Привет! Я с BDE не работаю а использую DOA и вызываю процедуры из пакетов с любыми параметрами и проблем не набдлюдаю. Попробуй если можешь использовать DOA.
Удачи.
danilka (2002-10-21 09:22:00) [6]Попробовал, кстати, поставить ORACLIENT8 вместо OCI, спотыкается на том-же месте. Похоже все-таки это проблема SQLORA8. Кто-нибудь знает как ее обойти?
danilka (2002-10-21 09:20:00) [7]в VENDOR INIT?
там OCI.DLL и стоит.
я его оставлял и тогда когда менял в DLL32 SQLORA8.DLL на SQLORA32.DLL.
Shadi (2002-10-21 09:01:00) [8]Можно попробовать в BDE поставить вместо oraclient8 OCI.DLL..