Асинхронное выполнение позволяет, не дожидаясь результата выполнения SQL-запроса, продолжить работу в приложении. Для этого предварительно должно быть создано специализированное соединение. В рамках этого соединения, используя метод IDalConnection.CreateCommand необходимо создать команду и настроить ее параметры. В рамках специализированного соединения не поддерживается выполнение команд с помощью метода IDalCommand.Execute или IDalCommand.ExecuteWithoutLast. Выполнение команд осуществляется в виде отдельных задач. Работа с задачами в языке Fore производится с помощью свойств и методов интерфейса ITask. Задачу выполнения SQL-запросов в асинхронном режиме описывает интерфейс IDalCommandTask. Для создания задачи необходимо созданную команду привести к типу IDalCommand2 и вызвать метод IDalCommand2.CreateTask:
Var
//...
ORCLAsyncConnect: IDalConnection;
Command: IDalCommand;
CmdParams: IDalCommandParams;
Param: IDalCommandParam;
TaskCommand: IDalCommandTask;
//...
Begin
//...
Command := ORCLAsyncConnect.CreateCommand;
Command.SQL := "insert into Table1(Code) values(:ParamArray)";
Command.Parse;
CmdParams := Command.Params;
CmdParams.Item(0).DataType := DbDataType.Integer;
Command.MaxParamsRows := 10000;
//Установка значений параметра
//...
//Создание задачи выполнения SQL-запроса в асинхронном режиме
TaskCommand := (Command As IDalCommand2).CreateTask(DalCommandExecuteType.Execute);
Для выполнения задачи необходимо привести ее к типу ITask и вызвать метод ITask.Start.
Var
//...
TaskCommand: IDalCommandTask;
//...
Begin
//...
(TaskCommand As ITask).Start;
После этого SQL-запрос будет выполняться параллельно текущему приложению. Используя свойство ITask.State можно отслеживать состояние выполнения задачи. Результат выполнения SQL-запроса можно получить в свойстве IDalCommandTask.Result.
См. также: