Execute: Integer;
Метод Execute запускает объект на выполнение и возвращает количество обработанных записей.
Если осуществляется работа с командой СУБД, то метод возвращает количество вставленных/удалённых/обновлённых записей. При работе с процедурой/функцией метод возвращает значение «-1», при этом результаты работы процедуры/функции будут доступны в коллекции значений параметров, которые должны быть сформированы при открытии объекта репозитория.
Для выполнения примера предполагается наличие в репозитории процедуры с идентификатором «P_CALC». Процедура в своей структуре имеет два входных параметра с идентификаторами «pMin», «pMax» и один выходной с идентификатором «pResult». В процедуре выполняется какой-либо расчёт.
Добавьте ссылки на системные сборки: Db, Metabase.
Sub UserProc;
Var
MB: IMetabase;
MDesc: IMetabaseObjectDescriptor;
PValues: IMetabaseObjectParamValues;
SQLInst: ISQLCommandInstance;
Begin
MB := MetabaseClass.Active;
//Описание процедуры
MDesc := MB.ItemById("P_CALC");
//Создание набора параметров
PValues := MDesc.Params.CreateEmptyValues;
PValues.FindById("pMin").Value := 0;
PValues.FindById("pMax").Value := 1000;
//Получение открытого экземпляра
SQLInst := MDesc.Open(PValues) As ISQLCommandInstance;
//Выполнение процедуры
SQLInst.Execute;
//Вывод значения выходного параметра
Debug.WriteLine(PValues.FindById("pResult").Value);
End Sub UserProc;
Imports Prognoz.Platform.Interop.Db;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MDesc: IMetabaseObjectDescriptor;
PValues: IMetabaseObjectParamValues;
SQLInst: ISQLCommandInstance;
Begin
MB := Params.Metabase;
//Описание процедуры
MDesc := MB.ItemById["P_CALC"];
//Создание набора параметров
PValues := MDesc.Params.CreateEmptyValues();
PValues.FindById("pMin").Value := 0;
PValues.FindById("pMax").Value := 1000;
//Получение открытого экземпляра
SQLInst := MDesc.Open(PValues) As ISQLCommandInstance;
//Выполнение процедуры
SQLInst.Execute();
//Вывод значения выходного параметра
System.Diagnostics.Debug.WriteLine(PValues.FindById("pResult").Value);
End Sub;
При выполнении примера будет получен экземпляр процедуры, предназначенный для её выполнения. При открытии экземпляра будут заданы входные параметры. После запуска процедуры на выполнение полученное значение выходного параметра будет выведено в консоль среды разработки.
См. также: