Oracle实现往某表批量插入记录
在Oracle中,可以使用INSERT ALL
语句来进行批量插入。这种方式可以在单个SQL操作中插入多条记录,提高了数据插入的效率。
以下是一个使用INSERT ALL
语句的例子:
假设我们有一个表employees
,包含字段id
, name
, 和 department_id
,我们想要批量插入多条记录:
INSERT ALL
INTO employees (id, name, department_id) VALUES (1, 'Alice', 10)
INTO employees (id, name, department_id) VALUES (2, 'Bob', 20)
INTO employees (id, name, department_id) VALUES (3, 'Charlie', 10)
INTO employees (id, name, department_id) VALUES (4, 'David', 20)
SELECT * FROM dual;
这个语句会在一个操作中插入四条记录。dual
是Oracle中的一个虚拟表,通常用于不需要从实际表中选择数据的INSERT语句中。
如果要插入的数据是动态生成的,可以使用PL/SQL来构建并执行这样的INSERT ALL语句。例如,使用PL/SQL的匿名块:
BEGIN
FOR i IN 1..1000 LOOP
EXECUTE IMMEDIATE 'INSERT INTO employees (id, name, department_id) VALUES (:1, :2, :3)'
USING i, 'Employee_' || i, MOD(i, 2);
END LOOP;
END;
这个PL/SQL匿名块会生成1到1000的连续ID,并插入到employees
表中,名字为Employee_1
, Employee_2
等,部门ID为ID的奇偶性。
评论已关闭