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

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

Вызов хранимой процедуры в ODAC


lightix ©   (2004-05-27 10:35:00) 

Имеется в Oracle 8.1.7 хранимая процедура с параметрами, пытаюсь ее вызвать используя TOraStoredProc, указываю StoredProcName = kt.GET_FREE_TABN , после чего в свойствах автоматически появляются ее параметры и текст SQL для вызова
[code]
begin
 kt.GET_FREE_TABN(:DIAP, :KZ, :CEX, :NEW_TABN);
end;
[/code]
затем в программе пытаюсь передать в нее параметры и выполнить ее
[code]
StoredProc1->Params->ParamByName("DIAP")->Value=0;
StoredProc1->Params->ParamByName("KZ")->Value=P_KZ->KeyValue;
StoredProc1->Params->ParamByName("CEX")->Value=P_CEX->KeyValue;

StoredProc1->ExecProc();
[/code]

При выполнении данного кода на первой же строке вылетает ошибка "Параметр DIAP не найден", хотя если посмотреть StoredProc1->Params - то там все в порядке, все параметры на месте ...

Что я делаю неправильно?

PS Эта же процедура с тем же самым кодом для вызова абсолютно прекрасно функционирует с компонентами NCOCI8 TOCIStoredProc без какого либо шаманства - указал имя процедуры и все.


Val   (2004-06-01 13:41:00) [1]

пробовали не указывать имя схемы?


lightix   (2004-06-01 13:28:00) [2]

kt - имя схемы.
процедура рабочая, без проблем работает с компонентами NCOCI и в плюсе уже год.
проблема именно в ODAC'e


Val   (2004-05-27 19:23:00) [3]

вы о чем, уважаемый?


Курдль   (2004-05-27 17:28:00) [4]


> работает, если выполнять его в навигаторе, плюсе, и т.д?
> kt - имя пакета? есть ли объявление процедуры в интерфейсной
> секции пакета?

"Тело без объявления"? Она бы не компилилась Ораклом.


Val   (2004-05-27 16:53:00) [5]

то есть блок

begin
kt.GET_FREE_TABN(<param1>, <param2>, <param3>, <param4>);
end;

работает, если выполнять его в навигаторе, плюсе, и т.д?
kt - имя пакета? есть ли объявление процедуры в интерфейсной секции пакета?


lightix   (2004-05-27 12:49:00) [6]

в том то и дело что принимаю параметры ...


Курдль   (2004-05-27 12:08:00) [7]

А чего тебе сдалось ...StoredProc?
Вроде никаких out-параметров не принимаешь - так пользуй
...Query.Execute


slgeo   (2004-05-27 12:04:00) [8]

Попробуй нажать кнопку Execute в редакторе StoredProc


lightix   (2004-05-27 12:00:00) [9]

Опа, заработало ParamByName (причем не менял ничего) ...
Но теперь новая беда - при попытке выполнить его

StoredProc1->ExecProc();

Вылетает ошибка 'ORA-06550': line2,column 6: PLS-00302: component 'GET_FREE_TABN' must be declared
ORA-06550 : line2, column 3
PL/SQL: Statement ignored

Причем повторюсь, процедура рабочая абсолютно, и работает на той же форме в том же приложении если вызывать с помощью OCIStoredProc ....


Курдль   (2004-05-27 11:58:00) [10]

Очепятка: DAO = DOA.


Курдль   (2004-05-27 11:57:00) [11]

Не пользовал ODAC, но DAO требует либо установки свойств параметров в Variables-редакторе в design-time, либо явного указания типа переменной declareVariable(имя,тип)

А у ODAC нет режима DEBUG, как у DAO (когда конечный текст запроса с заполненными переменными перед отправкой на сервак показывается во всплывающем окошке?)


Sandman25+1   (2004-05-27 11:46:00) [12]

Попробуйте перед обращением посмотреть ParamCount.
Если все нормально, попробуйте посмотреть Params[0].Name.


lightix   (2004-05-27 11:43:00) [13]

Народ, ну что никто не юзает этот ODAC и хранимые процедуры?


Наверх

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