Методы добавления нескольких строк в таблицу в PL/SQL

Чтобы добавить несколько строк в таблицу в PL/SQL, вы можете использовать несколько методов. Вот несколько часто используемых подходов:

Метод 1: использование оператора INSERT INTO SELECT
Вы можете использовать оператор INSERT INTO SELECT для вставки нескольких строк в таблицу. Сначала вам нужно создать запрос, который выбирает данные, которые вы хотите вставить, а затем использовать оператор INSERT INTO для вставки выбранных данных в таблицу.

INSERT INTO your_table (column1, column2, column3)
SELECT value1, value2, value3 FROM dual
UNION ALL
SELECT value4, value5, value6 FROM dual
UNION ALL
SELECT value7, value8, value9 FROM dual;

В приведенном выше примере your_table— это имя таблицы, а column1, column2, column3— это имена столбцов, в которые вы хотите вставить. value1, value2, value3и т. д. представляют значения, которые вы хотите вставить в соответствующие столбцы.

Метод 2: использование предложения VALUES с инструкцией INSERT INTO
Другой способ вставки нескольких строк — использование предложения VALUES с инструкцией INSERT INTO. Этот метод позволяет указать несколько наборов значений в одном операторе INSERT.

INSERT INTO your_table (column1, column2, column3)
VALUES (value1, value2, value3),
       (value4, value5, value6),
       (value7, value8, value9);

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

Метод 3: использование оператора FORALL с массовым сбором
Если вам нужно вставить большое количество строк, вы можете использовать оператор FORALL с предложением BULK COLLECT. Этот метод более эффективен для вставки нескольких строк по сравнению с отдельными операторами вставки.

Вот пример:

DECLARE
  TYPE data_type IS TABLE OF your_table%ROWTYPE;
  data data_type;
BEGIN
  data := data_type();

  data.extend(3); -- Extend the collection to accommodate the desired number of rows

  -- Assign values to the collection
  data(1).column1 := value1;
  data(1).column2 := value2;
  data(1).column3 := value3;

  data(2).column1 := value4;
  data(2).column2 := value5;
  data(2).column3 := value6;

  data(3).column1 := value7;
  data(3).column2 := value8;
  data(3).column3 := value9;

  -- Insert the data into the table
  FORALL i IN 1..data.count
    INSERT INTO your_table VALUES data(i);

  COMMIT;
END;
/

В этом методе вы объявляете тип коллекции (data_type) на основе структуры таблицы. Затем вы объявляете переменную-коллекцию (data) этого типа. Вы расширяете коллекцию, чтобы вместить желаемое количество строк, а затем присваиваете значения элементам коллекции. Наконец, вы используете оператор FORALL для вставки данных в таблицу.