CurrentParamsRow: Integer;
Свойство CurrentParamsRow возвращает индекс текущего набора параметров.
Значения параметров указываются в коллекции Params. Для перехода к следующему набору параметров используйте метод NextParamsRow. При выполнении метода Execute будут обработаны все наборы параметров в диапазоне от нуля до CurrentParamsRow включительно. При выполнении метода ExecuteWithoutLast будут обработаны все диапазоны в диапазоне от нуля до CurrentParamsRow с исключением значений, указанных в наборе CurrentParamsRow.
После выполнения метода Execute или ExecuteWithoutLast свойству CurrentParamsRow будет установлено значение ноль. Это позволяет вновь задать значения наборов параметров и выполнить команду.
Для выполнения примера в репозитории должны быть база данных с идентификатором «DB» и таблица с идентификатором «MyTable».
Добавьте ссылки на системные сборки: Dal, Db, Metabase.
Sub UserProc;
Var
Mb : IMetabase;
DB_ORCL8 : IDatabaseInstance;
Command : IDalCommand;
CommandEx : IDalCommandEx;
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 := 4;
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
For i := 0 To Command.CurrentParamsRow Do
CommandEx := Command As IDalCommandEx;
CommandEx.SetCurrentParamsRow(i);
Debug.Write(Params.Item(0).Value);
Debug.Write(" ");
Debug.WriteLine(Params.Item(1).Value);
End For;
Command.ExecuteWithoutLast;
End If;
End Sub UserProc;
После выполнения примера в таблицу будет вставлено 10 записей. В окно консоли будут выведены наборы параметров, которые превысили максимальный набор обрабатываемых строк.
См. также: