Как отловить результат выполнения хранимой процедуры sql???
Все интернеты перерыл!!!!
Как в 1с отловить результат выполнения хранимой процедуры???
Некая обработка выполняет следующий код:
Код стандартный. Хотелось бы в переменной "РезультатВыполнения" увидеть результат выполнения процедуры (успех или код ошибки).
P.S. Когда запускаем текст нашей хранимой процедуры в консоли SQL сервера = она возращает (-1)..типа успешно выполнена.
как эту минус единицу получить в 1С?
Заранее спасибо за подсказки.
Как в 1с отловить результат выполнения хранимой процедуры???
Некая обработка выполняет следующий код:
Connection = Новый COMОбъект("ADODB.Connection");
Catalog = Новый COMОбъект("ADOX.Catalog");
Command = Новый COMОбъект("ADODB.Command");
Command.CommandTimeOut = 600;
Попытка
Catalog.ActiveConnection = СтрокаСоединение;
Connection.Open(СтрокаСоединение);
Command.ActiveConnection = Connection;
Исключение
СообщениеОбОшибке = "Не удалось соединиться c мобильной базой: " + СтрокаСоединение + ". " + ОписаниеОшибки();
ВызватьИсключение СообщениеОбОшибке;
КонецПопытки;
Command.CommandText = СтрокаЗапроса;
РезультатВыполнения = Command.Execute();
ПоказатьКод стандартный. Хотелось бы в переменной "РезультатВыполнения" увидеть результат выполнения процедуры (успех или код ошибки).
P.S. Когда запускаем текст нашей хранимой процедуры в консоли SQL сервера = она возращает (-1)..типа успешно выполнена.
как эту минус единицу получить в 1С?
Заранее спасибо за подсказки.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Путь верный....но коллекция Command.Parameters пуста....(((
Вычитал в интернетах, что можно:
1. Создать параметр с типом ReturnValue (в параметр такого типа автоматически вернется ретурн хранимой процедуры).
2. Передать его на вход ХП.
3. А после ее выполнения его прочитать.
CreateParameter (Name, Type, Direction, Size, Value)
"Direction" в нашем случае ставлю равным 4 (Indicates that the parameter represents a return value.)
"Type" = 3 (Indicates a four-byte signed integer)
Param1 = Command.CreateParameter("RETURN_VALUE", 3, 4, , NULL);
Command.Parameters.Append(Param1);
RecordSet = Command.Execute();
RETURN_VALUE = Command.Parameters("RETURN_VALUE").Value;
В отладчие RETURN_VALUE = Неопределено ((((
Вычитал в интернетах, что можно:
1. Создать параметр с типом ReturnValue (в параметр такого типа автоматически вернется ретурн хранимой процедуры).
2. Передать его на вход ХП.
3. А после ее выполнения его прочитать.
CreateParameter (Name, Type, Direction, Size, Value)
"Direction" в нашем случае ставлю равным 4 (Indicates that the parameter represents a return value.)
"Type" = 3 (Indicates a four-byte signed integer)
Param1 = Command.CreateParameter("RETURN_VALUE", 3, 4, , NULL);
Command.Parameters.Append(Param1);
RecordSet = Command.Execute();
RETURN_VALUE = Command.Parameters("RETURN_VALUE").Value;
В отладчие RETURN_VALUE = Неопределено ((((
(4) Для команды нужно CommandType установить с указанием, что это выполнение ХП. Вроде CommandType=4 должно быть. Тогда в Command.CommandText нужно передавать имя ХП, а параметры передавать через коллекцию Command.Parameters
Вод листинг фукнции:
сыпется вот здесь!!!!
Возможно ошибка в синтаксисе ADO!!!
Попытка
Connection = Новый COMОбъект("ADODB.Connection");
Catalog = Новый COMОбъект("ADOX.Catalog");
Command = Новый COMОбъект("ADODB.Command");
Попытка
Catalog.ActiveConnection = СтрокаСоединение;
Connection.Open(СтрокаСоединение);
Command.ActiveConnection = Connection;
Исключение
СообщениеОбОшибке = "Не удалось соединиться c мобильной базой: " + СтрокаСоединение + ". " + ОписаниеОшибки();
ВызватьИсключение СообщениеОбОшибке;
КонецПопытки;
Command.CommandTimeOut = 600;
Command.CommandType = 4;
Command.CommandText = "ИмяХранимойПроцедуры";
Param1 = Command.CreateParameter("RETURN", 3, ТипПараметраАДО("adParamReturnValue"), , NULL);
Command.Parameters.Append(Param1);
Param2 = Command.CreateParameter("repIDD", 200, ТипПараметраАДО("adParamInput"), 50, ФорматироватьПоле(ПараметрыВыгрузки.IDDАгент));
Command.Parameters.Append(Param2);
Param3 = Command.CreateParameter("ClientIDD", 200, ТипПараметраАДО("adParamInput"), 50, ФорматироватьПоле(ПараметрыВыгрузки.IDDПартнер));
Command.Parameters.Append(Param3);
Показатьсыпется вот здесь!!!!
RecordSet = Command.Execute(); // Выполнение и получение набора данных.
RETURN_ХП = Command.Parameters("RETURN").Value;
Сообщить("RETURN_ХП = " + RETURN_ХП);
Исключение
ВызватьИсключение ("Вызов хранимой процедуры с возвратом результата: " + СтрокаЗапроса + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ПоказатьВозможно ошибка в синтаксисе ADO!!!
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот