The Oracle INSERT ALL statement is used to insert multiple rows with a single INSERT statement. You can insert the rows into one table or multiple tables by using only one SQL command.
Syntax
INSERT ALL INTO table_name (column1, column2, column_n) VALUES (expr1, expr2, expr_n) INTO table_name(column1, column2, column_n) VALUES (expr1, expr2, expr_n) INTO table_name (column1, column2, column_n) VALUES (expr1, expr2, expr_n) SELECT * FROM dual;
1) table_name: it specifies the table in which you want to insert your records.
2) column1, column2, column_n: this specifies the columns in the table to insert values.
3) expr1, expr2, expr_n: this specifies the values to assign to the columns in the table.
This example specifies how to insert multiple records in one table. Here we insert three rows into the "suppliers" table.
INSERT ALL INTO suppliers (supplier_id, supplier_name) VALUES (20, 'Google') INTO suppliers (supplier_id, supplier_name) VALUES (21, 'Microsoft') INTO suppliers (supplier_id, supplier_name) VALUES (22, 'Apple') SELECT * FROM dual;
Output
This is totally equivalent to the following three INSERT statements.
INSERT INTO suppliers (supplier_id, supplier_name) VALUES (1000, 'Google'); INSERT INTO suppliers (supplier_id, supplier_name) VALUES (2000, 'Microsoft'); INSERT INTO suppliers (supplier_id, supplier_name) VALUES (3000, 'Apple');
The INSERT ALL statement can also be used to insert multiple rows into more than one table by one command only.
In the following example, we are going to insert records into the both "suppliers" and "customers" tables.
INSERT ALL INTO suppliers (supplier_id, supplier_name) VALUES (30, 'Google') INTO suppliers (supplier_id, supplier_name) VALUES (31, 'Microsoft') INTO customers (age, name, address) VALUES (29, 'Luca Warsi', 'New York') SELECT * FROM dual;
Output
Here, total 3 rows are inserted, 2 rows are inserted into the suppliers table and one row into the customers table.