Oracle一次执行(插入、更新、删除)多条语句的办法

本文介绍了一种使用SQL语句进行批量数据插入的方法,通过begin和end包裹插入语句以执行一整块代码,并讨论了如何通过捕获异常来判断执行结果。

用begin end;包裹住插入语句


如插入:

--注意分号很重要不能少
begin
insert into table (column1,column2) values(value1,value2);
insert into table (column1,column2) values(value1,value2);
insert into table (column1,column2) values(value1,value2);
end;

但是这样相当于执行了一整块代码ExecuteNonQuery()返回-1,所以想要判断结果最好通过获取异常来判断是否有错

### Oracle 数据库中一次插入多条记录的方法 在 Oracle 数据库中,有多种方法可以实现一次性的批量插入多行数据。一种较为简便的方式是在 `INSERT INTO` 语句之后跟随多个 `VALUES` 子句[^1]。 #### 使用单个 INSERT 语句带多个 VALUES 子句 这种方式允许在一个 SQL 命令里指定几组不同的值来完成多次的数据添加动作而不需要重复书写完整的插入命令: ```sql INSERT ALL INTO mytable (column1, column2, column3) VALUES ('val1', 'val2', 'val3') INTO mytable (column1, column2, column3) VALUES ('valA', 'valB', 'valC') SELECT * FROM dual; ``` 需要注意的是上述例子实际上利用了 `INSERT ALL` 结构,这并非严格意义上的单一 `INSERT...VALUES` 形式;真正的单个 `INSERT` 后接多个 `VALUES` 的形式如下所示,在某些版本的 Oracle 中支持这样的语法结构: ```sql INSERT INTO mytable (column1, column2, column3) VALUES ('val1','val2','val3'), ('valA','valB','valC'); ``` #### 利用 SELECT UNION ALL 实现批量插入 另一种常见的做法是通过 `INSERT ... SELECT` 来结合 `UNION ALL` 构建源数据集并将其全部导入目标表内。这种方法特别适合当待插入的数据已经存在于其他地方或者是可以通过查询逻辑产生的时候[^3]: ```sql INSERT INTO target_table(column_list) SELECT value_set_1 FROM DUAL UNION ALL SELECT value_set_2 FROM DUAL; ``` #### 多表无条件插入(Multi-table Unconditional Insert) 对于更加复杂的场景下可能涉及到向不止一张表同时执行插入操作,则可采用 `ALL INTO` 关键字来进行所谓的“多表无条件插入”。此功能使得能够基于同一个子查询的结果分别对不同表格实施独立却同步发生的插入行为[^2]: ```sql INSERT ALL WHEN condition THEN INTO table_name_1 (columns...) VALUES (expressions...) [WHEN other_condition THEN] INTO table_name_n (columns...) VALUES (expressions...) SELECT columns... FROM source_tables; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值