![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вызов хранимой процедуры Oracle из Delphi [D7, Oracle]
EugenePichugin © (2004-02-03 18:11:00)
Приветствую всех
есть на сервере оракловом хранимка (функция)
нужно ее вызвать и получить значение
подключаюсь через ADO
использую ADOStoredProc
вручную добавляю параметры в дезайн тайм
затем присваиваю входному параметру значение и пытаюсь вызвать
ADOStoredProc1.Parameters.ParamByName("P_LIST").Value := "|ID~112|DOC_TYPE~01|VALUE_DATE~25-06-2003|AMOUNT~53100|CCY~810|REM_MFO~044585779|REM_ACC_NO~30101810400000000779|";
ADOStoredProc1.Prepared := True;
ADOStoredProc1.ExecProc;
получается ошибка
пишет что параметры определены не верно
хотя вроде бы все определяю правильно
вот что написано в определении функции
(RESULT) NUMBER
P_LIST VARCHAR2 IN
P_VB_NO VARCHAR2 OUT
P_ERROR_MESSAGE VARCHAR2 OUT
и параметры так же обзываю (правда не уверен как назвать RESULT со скобками или без)
и типы им присваиваю
и дирекшн
но...
ничего не работает
пишет параметры определены неверно
кто знает толковое описания вызова оракловых хранимок , мож в сети где описано толково??
или как программно посмотреть имена и типы параметров???
Спасибо.
Vlad (2004-02-04 10:48:00) [1]
можно вместо TStoredProcedure использовать TQuery (или ADOQuery)
тогда в SQL запросе будет сдеующее:
begin
:Res:=MyStoredFunctiuon(.....);
end;
Выполняешь запрос и считываешь значение переменной Res
Reindeer Moss Eater (2004-02-04 10:30:00) [2]
А кто запрещает написать процедуру-обертку вокруг этой функции?
EugenePichugin (2004-02-04 10:16:00) [3]
Я бы с радостью.
Но база не моя.
И я жестко ограничен интерфейсом :(
а что, дело именно в резалте?
Reindeer Moss Eater (2004-02-04 08:41:00) [4]
Преврати функцию в процедуру, а result сделай out параметром - тебе говорят.
EugenePichugin (2004-02-03 19:04:00) [5]
Не понял?
Vlad (2004-02-03 18:55:00) [6]
procedure MyProcedure(P_LIST IN VARCHAR2, P_VB_NO OUT VARCHAR2, P_ERROR_MESSAGE OUT VARCHAR2, RESULT OUT NUMBER) IS
BEGIN
.....
END;