Execute: Integer;
Метод Execute осуществляет выполнение команды на сервере БД и возвращает число обработанных записей.
Метод выполняет SQL-запрос, указанный в свойстве IDalCommand.SQL. Если команда используется для извлечения данных, то рекомендуется вместо метода Execute использовать метод CreateCursor.
Если SQL-запрос изменяет данные (добавляет или удаляет записи, обновляет существующие записи), то метод вернет количество обработанных записей. При использовании в запросе параметров их фактические значения будут подставлены из коллекции IDalCommand.Params. Если команда используется для пакетной вставки нескольких наборов значений параметров, то при выполнении метода будут обработаны все наборы в диапазоне от нуля до CurrentParamsRow. После выполнения метода Execute свойству CurrentParamsRow будет установлено значение ноль.
Если во время выполнения SQL-запроса произошла какая-либо ошибка, то будет сгенерирована исключительная ситуация.
Для выполнения примера в репозитории должны быть база данных с идентификатором «DB» и таблица с идентификатором «MyTable».
Sub UserProc;
Var
Mb : IMetabase;
DB_ORCL8 : IDatabaseInstance;
Command : IDalCommand;
Params : IDalCommandParams;
sql : String;
paramArraySize, i, j : Integer;
Begin
MB := MetabaseClass.Active;
DB_ORCL8 := MB.ItemById("DB").Open(Null) As IDatabaseInstance;
sql := "insert into MyTable (field,field1) values(:1,:2)";
Command := DB_ORCL8.Connection.CreateCommand(sql);
Command.Type := DalCommandType.Text;
Command.Parse;
Command.Prepare;
Params := Command.Params;
Params.Item(0).DataType := DbDataType.String;
Params.Item(1).DataType := DbDataType.Float;
paramArraySize := 3;
Command.MaxParamsRows := paramArraySize;
j := 1;
For i := 1 To 10 Do
Params.Item(0).Value := "№ "+i.ToString;
Params.Item(1).Value := i + 0.1;
If (j < paramArraySize) Then
Command.NextParamsRow;
j := j+1;
Else
Command.Execute;
j:= 1;
End If;
End For;
If j > 1 Then
Command.ExecuteWithoutLast;
End If;
End Sub UserProc;
После выполнения примера в таблицу будет вставлено 10 записей.
См. также: