IDalCommand.CurrentParamsRow

Синтаксис

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(NullAs 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 записей. В окно консоли будут выведены наборы параметров, которые превысили максимальный набор обрабатываемых строк.

См. также:

IDalCommand