Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.08.2009, 12:14
KAlAn KAlAn вне форума
Прохожий
 
Регистрация: 12.07.2009
Сообщения: 4
Репутация: 10
По умолчанию Получить значение из SQLStoredProc

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

В чем моя ошибка (хотя, даже не знаю, где здесь можно ошибиться ;-)?
Как получить выходной параметр из процедуры?

Спасибо.
Ответить с цитированием
  #2  
Старый 27.08.2009, 12:19
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Я так мыслю нужно не Open делать, а ExecProc
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 27.08.2009, 13:40
KAlAn KAlAn вне форума
Прохожий
 
Регистрация: 12.07.2009
Сообщения: 4
Репутация: 10
По умолчанию

Действительно.
ExecProc позволяет выполнить процедуру, но значение параметра SQLStoredProc1.ParamByName('F_REZULT').AsString равно пустой строке.
Не возвращает процедура ничего.
Ответить с цитированием
  #4  
Старый 27.08.2009, 15:35
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Тип параметра посмотри, може по умолчанию In стоит.
Ответить с цитированием
  #5  
Старый 27.08.2009, 16:49
KAlAn KAlAn вне форума
Прохожий
 
Регистрация: 12.07.2009
Сообщения: 4
Репутация: 10
По умолчанию

Не, точно out.
Есть серьезные основания думать, что (Build 4.453) глюкаво работает с SQLStoredProc.
Кстати, заряжаешь процедуру через Open или все-же через ExecProc?
В описалове говорят, что если процедура возвращает значение(я), тогда нужно пользовать Open (или Active := True).
Но через Open она ваще не пашет.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter