Форум: "Базы";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];
Внизвыполнение sp с параметрами Найти похожие ветки
← →
Kelly (2008-09-30 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 © (2008-09-30 18:36) [1]может, собачку надо перед именем?
← →
Kelly (2008-09-30 18:38) [2]Не помогает. Пробовал и с собачкой и без. Текст ошибки одинаков
← →
clickmaker © (2008-09-30 18:48) [3]а в хранимке out стоит у параметра?
← →
sniknik © (2008-09-30 19:35) [4]параметры не нужно создавать, их нужно считывать (рефреш вроде пойдет, не помню давно с процедурами как с cmdStoredProc не работал, явным запросом проще)
← →
kaif © (2008-09-30 20:15) [5]CommandText := "GET_STATE";
А где здесь в тексте команды место, где подразумевается использование параметра?
← →
sniknik © (2008-09-30 20:55) [6]> где подразумевается использование параметра?
при cmdStoredProc это имя процедуры, параметры запрашиваются с сервера, те с которыми процедура написана.
← →
Kelly (2008-10-01 09:44) [7]в общем после многих научных тыков удалось вызвать эту процу.
Параметры создаю явно как и было описано выше.
(После refresh длина коллеции параметров возвращает верное значение, но экзек все равно заканчивается неудачей, ""экспектс такой-то параметер вич вазнот сапплаед" )
То есть подозреваю, что после рефреша надо все равно явно выставлять всем параметрам типы, дирекшен и прочее.
Во вчерашнем коде причина ошибки была в том, что есть еще один аутпут параметр строкового типа. Он создавался точно так же, но ему не был указан Size. После указания длины все поехало как надо.
И еще почему-то когда имя процедуры устанавливаешь в дизайне, с помощью редактора командтекст, то все хранимки видны как <оригинальное_имя>;1
То есть в дизайне у меня присвоилось "GET_STATE;1"
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c