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

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

выполнение sp с параметрами [D7, MSSQL]


Kelly ©   (2008-09-30 18:31:00) 

При вызове execute ругается что неверно определен объект параметр

/*в процедуре два параметра, один инпут и один аутпут */

with TADOCommand.Create(Self) do
 try
  Connection := ADOConnection1;
  CommandText := 'GET_STATE';
  CommandType := cmdStoredProc;
  with Parameters.AddParameter do
   begin
    Name      := 'p_source_id';
    DataType  := ftInteger;
    Direction := pdInput;
    Value     := 13879;
   end;

  with Parameters.AddParameter do
   begin
    Name      := 'p_out_state';
    DataType  := ftInteger;
    Direction := pdOutput;
   end;
Execute;
....


Kelly   (2008-10-01 09:44:00) [1]

в общем после многих научных тыков удалось вызвать эту процу.

Параметры создаю явно как и было описано выше.

(После refresh длина коллеции параметров возвращает верное значение, но экзек все равно заканчивается неудачей, "'экспектс такой-то параметер вич вазнот сапплаед" )
То есть подозреваю, что после рефреша надо все равно явно выставлять  всем параметрам типы, дирекшен и прочее.

Во вчерашнем коде причина ошибки была в том, что есть еще один аутпут параметр строкового типа. Он создавался точно так же, но ему не был указан Size. После указания длины все поехало как надо.

И еще почему-то когда имя процедуры устанавливаешь в дизайне, с помощью редактора командтекст, то все хранимки видны как <оригинальное_имя>;1

То есть в дизайне у меня присвоилось 'GET_STATE;1'


sniknik   (2008-09-30 20:55:00) [2]

> где подразумевается использование параметра?
при cmdStoredProc это имя процедуры, параметры запрашиваются с сервера, те с которыми процедура написана.


kaif   (2008-09-30 20:15:00) [3]

CommandText := 'GET_STATE';

А где здесь в тексте команды место, где подразумевается использование параметра?


sniknik   (2008-09-30 19:35:00) [4]

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


clickmaker   (2008-09-30 18:48:00) [5]

а в хранимке out стоит у параметра?


Kelly   (2008-09-30 18:38:00) [6]

Не помогает. Пробовал и с собачкой и без. Текст ошибки одинаков


clickmaker   (2008-09-30 18:36:00) [7]

может, собачку надо перед именем?


Наверх

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