📅  最后修改于: 2023-12-03 14:44:56.458000             🧑  作者: Mango
Oracle 是一种关系型数据库管理系统,支持多种方式插入数据。在某些场景下,需要一次插入多行数据,本文将介绍如何在 Oracle 中执行多次插入。
在 Oracle 中,单个插入数据可以使用 INSERT INTO 语句,语法如下:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...);
其中,table_name 是表的名称,column1, column2, column3 是表中的列名,value1, value2, value3 是要插入的值。
当需要一次性插入多条记录时,可以使用 INSERT INTO SELECT 语句。语法如下:
INSERT INTO table_name (column1, column2, column3,...)
SELECT value1, value2, value3,...
FROM some_table;
其中,table_name 是表的名称,column1, column2, column3 是表中的列名,value1, value2, value3 是要插入的值,some_table 是数据来源表的名称。
例如,插入两条记录:
INSERT INTO employees (id, name, age)
SELECT 1, '张三', 20 FROM dual
UNION ALL
SELECT 2, '李四', 25 FROM dual;
在 Oracle 中,还可以使用 FORALL ... INSERT 语句一次性插入多行数据。FORALL 语句是一个 PL/SQL 语句,可以将数组或集合中的数据一起插入到表中。
语法如下:
DECLARE
TYPE id_array_t IS TABLE OF NUMBER;
TYPE name_array_t IS TABLE OF VARCHAR2(100);
TYPE age_array_t IS TABLE OF NUMBER;
ids id_array_t := id_array_t(1, 2, 3, 4);
names name_array_t := name_array_t('张三', '李四', '王五', '赵六');
ages age_array_t := age_array_t(20, 25, 30, 35);
BEGIN
FORALL i IN 1 .. ids.COUNT
INSERT INTO employees (id, name, age)
VALUES (ids(i), names(i), ages(i));
END;
其中,ids, names, ages 分别是要插入的 id、name、age 数据,FORALL 语句循环插入数据,i 是循环变量。
在 Oracle 中,可以使用 INSERT INTO SELECT 语句或 FORALL ... INSERT 语句一次性插入多条记录。根据实际情况,选择适合的插入方式。