| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Работа с SQLStoredProc |
| Автор: KAnAn 27.8.2009, 11:25 |
| Oracle 9.0.1, Delphi 7.0 Enterprise (Build 4.453) Хранимая процедура: — Возвращает цифры в количестве указанном в f_count // Все данные в varchar2 для чистоты эксперимента create or replace procedure test_delphi( f_variable in varchar2, f_count in varchar2, f_rezult out varchar2) is begin f_rezult := (substr(to_char(f_variable), (to_number(f_count) * -1))); end; Выполняю процедуру в Oracle: declare v_Variable varchar2(10); begin test_delphi(579123, 5, v_Variable); dbms_output.put_line('Результат '||v_Variable); end; Здесь вопросов нет, все работает. В Delphi для доступа к данным использую dbExpress. Необходимо получить возвращаемое значение в Delphi используя компонент SQLStoredProc. На форме регистрирую компоненты SQLConnection, SQLStoredProc, Button и Edit. Цепляюсь к базе. SQLConnection работает нормально. У SQLStoredProc указываю схему (SchemaName), выбираю необходимую процедуру (TEST_DELPHI). На кнопке в обработчике Button1Click пишу: SQLStoredProc1.ParamByName('F_VARIABLE').AsString := '19283746'; SQLStoredProc1.ParamByName('F_COUNT').AsString := '3'; SQLStoredProc1.Open; Edit1.Text := SQLStoredProc1.ParamByName('F_REZULT').AsString; При выполнении процедуры выходит сообщение об ошибке: SQLStoredProc1: Cursor not returned from Query. Судя по описанию работы с компонентами dbExpress, SQLStoredProc1 в своем параметре F_REZULT (который, кстати, в компоненте отобразился правильно, ParamType = ptOutput) должен возвращать результат. Однако этого не происходит. На форумах эта проблема периодически всплывает, но ответы не содержат решения. В чем моя ошибка (хотя, даже не знаю, где здесь можно ошибиться ;-)? Как получить выходной параметр из процедуры? Спасибо. |
| Автор: KAnAn 27.8.2009, 12:53 |
| Кстати, использование SQLStoredProc1.ExecProc позволяет выполнить процедуру, но значение по-прежнему не возвращает. |