Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с возвращением параметра в TADOStoredProc [D7]


alsov1 ©   (2004-11-15 13:23:00) 

Приветствую Мастера!

Вот какая проблема
Есть процедура
CREATE or replace PROCEDURE Addtest (
           HowMany  in number,
           now      in timestamp,
           nowdate  out timestamp)

is BEGIN
  declare
     i number;
  begin
    for i in 1..HowMany loop

       insert into Test
       values
         (dbms_Random.STRING('p', 20),
          dbms_Random.normal,
          now);

    end loop;
    nowdate := sysdate;
  commit;
  end;
END;
/

Из делфи вызываю её с помощью TADOStoredProc вот так

 Proc.ProcedureName := 'ADDTEST';
 proc.Parameters.Clear;
 for i := 0 to 2 do
   Proc.Parameters.AddParameter;

 Proc.Parameters.Items[0].Value := '10';
 Proc.Parameters.Items[1].Value := '10.10.04 10:34:09';
 Proc.Parameters.Items[2].DataType := ftTimeStamp;
 Proc.Parameters.Items[2].Direction := pdOutput ;

 proc.Prepared := true;
 proc.ExecProc;

Работать не хочет - ругается
Причём если нет третьего параматра в процедуре (nowdate  out timestamp; естественно он и в делфях не прописывается), то всё работает нормально.

А как только объявляешь возвращаемый параметр - вот тут всё плохо.

Подскажите в чём ошибка?

Заранее спасибо


alsov1   (2004-11-15 18:11:00) [1]

Разобрался
оказывается TimeStamp в делфах это
Proc.Parameters.Items[2].DataType := ftString

блин не по людски как-то :(


alsov1   (2004-11-15 16:59:00) [2]

в дизайн тайме тоже не хочет


Соловьев   (2004-11-15 15:42:00) [3]


>  Proc.ProcedureName := 'ADDTEST';
>  proc.Parameters.Clear;
>  for i := 0 to 2 do
>    Proc.Parameters.AddParameter;
>
>  Proc.Parameters.Items[0].Value := '10';
>  Proc.Parameters.Items[1].Value := '10.10.04 10:34:09';
>  Proc.Parameters.Items[2].DataType := ftTimeStamp;
>  Proc.Parameters.Items[2].Direction := pdOutput ;
>
>  proc.Prepared := true;
>  proc.ExecProc;


А если все в дизайн тайме настроить? Работает?


alsov1   (2004-11-15 15:25:00) [4]

Так вызов из делфей с помощью TADOStoredProc должен быть одинаковый для любой поддерживаемой СУБД.


Соловьев   (2004-11-15 15:22:00) [5]


> СУБД - Оракл у меня.

ну так сразу писать надо то :) тут я не знаток...


alsov1   (2004-11-15 15:13:00) [6]

Процедура компилится и работает, а вашем способом даже и не думает
СУБД - Оракл у меня.

Проблема в вызове процедуры из Делфи.


Соловьев   (2004-11-15 13:30:00) [7]


> nowdate := sysdate;

set nowdate = sysdate


Соловьев   (2004-11-15 13:29:00) [8]


> nowdate  out timestamp)

nowdate  timestamp output)

?


Наверх

Титульная страница Поиск, карта сайта Написать письмо