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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2007, 12:21   #1
Иванчо
Пользователь
 
Регистрация: 20.09.2007
Сообщений: 11
По умолчанию Выполнение хранимой процедуры с output параметром

научите, пожалуйста вызывать хранимую процедуру
пробовал так, а возвращает ошибку, параметр - nil

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ADOCommand1.CommandText := 'EXEC dbo.i :prid, :val';  // val  объявлен output
  ADOCommand1.Parameters.Clear;
  ADOCommand1.Parameters.CreateParameter('prid', ftInteger, pdInput, 8, 7 );
  ADOCommand1.Parameters.CreateParameter('val', ftFloat, pdOutput, 10, 7 );
  ADOCommand1.Execute;
  Label1.Caption := FloatToStr(ADOCommand1.Parameters.ParamByName('val').Value); //???
end;
Иванчо вне форума Ответить с цитированием
Старый 26.10.2007, 12:34   #2
CruiserD
 
Регистрация: 24.10.2007
Сообщений: 7
По умолчанию

Попробуй связку TADOStoredProc с TADOConnection
у меня работает так:

Код:
Procedure Procedure1(P1: Integer; Var P2: Integer);
Begin
   With TADOStoredProc1 Do
     Begin
        ProcedureName:='PROC1';
        Parameters.Clear;
        Parameters.CreateParameter('PARAM1',ftInteger,pdInput,10,P1);
        Parameters.CreateParameter('PARAM2',ftInteger,pdOutput,10,P2);
        Prepared:=TRUE;
        ExecProc;
        P2:=Parameters.ParamValues['PARAM2'];
     End;
End;
используй теги для оформления кода. Alex21

Последний раз редактировалось Alex21; 26.10.2007 в 17:33.
CruiserD вне форума Ответить с цитированием
Старый 26.10.2007, 13:34   #3
Иванчо
Пользователь
 
Регистрация: 20.09.2007
Сообщений: 11
По умолчанию

Работает только для типа данных int, а какой ft... в дельфи указать для переменной decimal(7, 2) в хранимой процедуре
Иванчо вне форума Ответить с цитированием
Старый 26.10.2007, 14:39   #4
CruiserD
 
Регистрация: 24.10.2007
Сообщений: 7
По умолчанию

decimal(7, 2) это у тебя видимо суммы
я для этих целей всегда использовал в сиквеле тип нумерик(х,у)
в дельфе соответственно ftBCD
Попробуй к десималу применить в дельфе ftBCD
CruiserD вне форума Ответить с цитированием
Старый 26.10.2007, 14:52   #5
Иванчо
Пользователь
 
Регистрация: 20.09.2007
Сообщений: 11
По умолчанию

научился. используется Currency, ftCurrency.
Спасибо за помощь.
Иванчо вне форума Ответить с цитированием
Старый 26.10.2007, 14:59   #6
CruiserD
 
Регистрация: 24.10.2007
Сообщений: 7
По умолчанию

ну можно и курренси
гуд лак
CruiserD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Console Output Redirection, PeekNamedPipe d0vgan Win Api 7 05.09.2021 13:57
запуск с параметром... prizrak1390 Общие вопросы Delphi 4 16.05.2008 22:29
Вопрос по ввыводу данных в output.txt C++ Jugger Общие вопросы C/C++ 2 31.01.2008 16:14
проблему возможно решить с помощью хранимой процедуры на SQL? yulia БД в Delphi 8 24.05.2007 20:25