Команда выполнения SQL-запросов

Имея соединение с сервером БД можно производить работу с объектами и их данными. Для выполнения каких-либо действий пользователь, под которым производилось подключение, должен обладать соответствующими правами. Для работы с объектами БД и управления транзакциями к серверу в интерфейсе IDalConnection реализован ряд свойств и методов. Чтобы работать с базой данных с помощью SQL-запросов используется команда, которую описывает интерфейс IDalCommand. Для создания команды используется метод IDalConnection.CreateCommand. У команды в свойстве IDalCommand.SQL необходимо задать SQL-запрос, который будет выполняться. Выполнение запроса происходит при вызове метода IDalCommand.Execute, IDalCommand.ExecuteWithoutLast или IDalCommand.CreateCursor. В зависимости от того, какие действия выполняет SQL-запрос возможны следующие варианты:

Var
    //...
    ORCLConnect: IDalConnection;
    Command: IDalCommand;
    Cursor: IDalCursor;
    //...
Begin
    //...
    Command := ORCLConnect.CreateCommand;
    //Извлечение данных
    Command.SQL := "select * from Table1";
    //Курсор для работы и полученными данными
    Cursor := Command.CreateCursor;
    While Not Cursor.Eof Do
        //...
        Cursor.Next;
    End While;
    Cursor.Close;
    //Изменение данных
    Command.SQL := "insert into Table1(Code) values('123')";
    i := Command.Execute;
    Command.Close;
    Debug.WriteLine("Добавлено записей: " + i.ToString);

Использование параметров в SQL-запросах

Для многократного использования команды с различными наборами значений реализована возможность указывать в SQL-запросе параметры. Параметры имеют следующий синтаксис: :<Наименование параметра>. Анализ SQL-запроса на наличие параметров производится при вызове метода IDalCommand.Parse. После анализа коллекция параметров будет доступна в свойстве IDalCommand.Params. В данной коллекции для каждого параметра можно указать значение, которое будет подставлено в SQL-запрос при выполнении команды.

Var
    //...
    ORCLConnect: IDalConnection;
    Command: IDalCommand;
    //...
Begin
    //...
    Command := ORCLConnect.CreateCommand;
    //Изменение данных
    Command.SQL := "insert into Table1(Code) values(:CodeValue)";
    //Анализ SQL-запроса
    Command.Parse;
    //Указание значения найденного параметра
    Command.Params.Item(0).Value := 124;
    //Выполнение команды
    i := Command.Execute;
    Command.Close;
    Debug.WriteLine("Добавлено записей: " + i.ToString);

В команде можно указать несколько наборов значений параметров. Количество наборов указывается в свойстве IDalCommand.MaxParamsRows.

Примечание. Перед указанием значения свойства IDalCommand.MaxParamsRows для каждого параметра должен быть указан тип данных.

Значения параметров также указываются в коллекции IDalCommand.Params. Для перехода к следующему набору параметров используется метод IDalCommand.NextParamsRow.

Var
    //...
    ORCLConnect: IDalConnection;
    Command: IDalCommand;
    //...
Begin
    //...
    Command := ORCLConnect.CreateCommand;
    //Изменение данных
    Command.SQL := "insert into Table1(Code) values(:ParamArray)";
    //Анализ SQL-запроса
    Command.Parse;
    //Указание коллекции значений параметра
    Param := Command.Params.Item(0);
    Param.DataType := DbDataType.Integer;
    Command.MaxParamsRows := 3;
    //Первое значение
    Param.Value := 125;
    Command.NextParamsRow;
    //Второе значение
    Param.Value := 126;
    Command.NextParamsRow;
    //Третье значение
    Param.Value := 127;
    //Выполнение команды
    i := Command.Execute;
    Command.Close;
    Debug.WriteLine("Добавлено записей: " + i.ToString);

См. также:

Введение