Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2012, 23:17   #1
yasic
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 44
По умолчанию Параметры хранимой процедуры

Ребята, подскажите в чем ошибка. Из Delphi не могу запустить ХП c параметрами. Собственно вот объявление ХП

Код:
CREATE PROCEDURE GetInteger (@Prop char(50), @Res int OUTPUT)
AS
BEGIN
...................
А вот код:

Код:
function TOptions.GetInt(ProcName: string; const AKey: string): Integer;
begin
 with frmMain.ADOStoredProc do begin
   ProcedureName := WideString(ProcName);
    with Parameters do begin
     CreateParameter('@Prop', ftString, pdInput, SizeOf(ShortString), '');
     CreateParameter('@Res', ftInteger, pdOutput, SizeOf(Integer), 0);
    end;
   Parameters.ParamValues['@Prop'] := AKey;
   Prepared := True;
   Active := True; <- Тут ошибка
   ExecProc;
.....................................
Ошибка: CommandText does not return a result set
yasic вне форума Ответить с цитированием
Старый 25.01.2012, 00:16   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Active := True; не нужно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.01.2012, 01:01   #3
yasic
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 44
По умолчанию

OK. Но процедура отрабатывает только 1 раз. При повторном клике на кнопку сообщение Access Violation на ExecProc. Подскажите, в чем проблема?

Все разобрался. Спасибо.

Последний раз редактировалось Stilet; 25.01.2012 в 22:11.
yasic вне форума Ответить с цитированием
Старый 25.01.2012, 17:55   #4
yasic
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 44
По умолчанию Параметр хранимой процедуры OUTPUT

Подскажите пожалуйста в чем может быть проблема. Хранимая процедура в QA работает без проблем, а в Delphi возвращает не то что надо. Вот ХП:
Код:
CREATE PROCEDURE GetInteger (@Prop CHAR(50),  @Res int = 0 OUTPUT)
AS
BEGIN
 SELECT tbl_integer.value_integer
  FROM        tbl_property 
            INNER JOIN
                  tbl_integer ON tbl_property.id_prop = tbl_integer.id_prop
  WHERE    (tbl_property.property = @Prop)
END
GO
В Delphi обращаюсь так:

Код:
...............................
with frmMain.ADOStoredProc do begin
   ProcedureName := WideString(ProcName);
   Parameters.Refresh;
     with Parameters do begin
       ParamByName('@Prop').Value := AKey;
     end;
   ExecProc;
 Result :=  Parameters.ParamValues['@Res'];
....................................
yasic вне форума Ответить с цитированием
Старый 26.01.2012, 18:10   #5
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Вы обращаетесь к параметру а надо обращаться к полю
Код:
 Result := ADOStoredProc1.FieldByName('@Res');
vovk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов хранимой процедуры welcomeTo Помощь студентам 0 04.08.2011 20:26
Вызов хранимой процедуры SQL2005 Express mirra88 C++ Builder 2 03.07.2011 20:55
Просмотре результатов работы хранимой процедуры analyst SQL, базы данных 0 24.06.2011 19:57
Результат Хранимой процедуры в INterBase Etlau Помощь студентам 0 28.12.2009 17:38
Выполнение хранимой процедуры с output параметром Иванчо БД в Delphi 5 26.10.2007 14:59