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) должен возвращать результат. Однако этого не происходит.
На форумах эта проблема периодически всплывает, но ответы не содержат решения.
В чем моя ошибка (хотя, даже не знаю, где здесь можно ошибиться ;-)?
Как получить выходной параметр из процедуры?
Спасибо.