Конференция "Базы" » выполнение sp с параметрами [D7, MSSQL]
 
  • Kelly (30.09.08 18:31) [0]
    При вызове 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;
    ....
  • clickmaker © (30.09.08 18:36) [1]
    может, собачку надо перед именем?
  • Kelly (30.09.08 18:38) [2]
    Не помогает. Пробовал и с собачкой и без. Текст ошибки одинаков
  • clickmaker © (30.09.08 18:48) [3]
    а в хранимке out стоит у параметра?
  • sniknik © (30.09.08 19:35) [4]
    параметры не нужно создавать, их нужно считывать (рефреш вроде пойдет, не помню давно с процедурами как с cmdStoredProc не работал, явным запросом проще)
  • kaif © (30.09.08 20:15) [5]
    CommandText := 'GET_STATE';

    А где здесь в тексте команды место, где подразумевается использование параметра?
  • sniknik © (30.09.08 20:55) [6]
    > где подразумевается использование параметра?
    при cmdStoredProc это имя процедуры, параметры запрашиваются с сервера, те с которыми процедура написана.
  • Kelly (01.10.08 09:44) [7]
    в общем после многих научных тыков удалось вызвать эту процу.

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

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

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

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

    То есть в дизайне у меня присвоилось 'GET_STATE;1'
 
Конференция "Базы" » выполнение sp с параметрами [D7, MSSQL]
Есть новые Нет новых   [134473   +28][b:0][p:0]