Чтобы добавить несколько строк в таблицу в 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 для вставки данных в таблицу.