oracle插入多条语句应用

本文介绍了一种在SQL中批量插入数据的正确方法,避免了单行子查询返回多行的问题,通过将整个插入语句作为子查询来实现,提高了数据插入效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:插入某表,三个字段 ,第一个字段为uuid,第二个字段定死,第三个字段为另表的的一个字段。

首先错误示范:

insert into s_module_function_info (module_function_id,module_id,function_id)
values(sys_guid(),'2925A7865EEC4FA1A444B44772C6DABE',(select t.function_id from s_function_info t));

报:单行子查询返回多个行,第三个字段为多条数据。

解决:

insert into s_module_function_info (module_function_id,module_id,function_id)
(select sys_guid(),'2925A7865EEC4FA1A444B44772C6DABE',t.function_id from s_function_info t);

把他当成一条整的子查询插入,正常。

我碰到过很多这种情况 ,想造一些数据,但是一条一条的插,很笨,多条插,又不成功。

这里备注一下,想不起来的时候回看一下,下次就会了。

Oracle数据库中,可以使用INSERT语句向表中插入多条记录。通常有以下几种方式: 1. 单条INSERT语句插入单条记录: ```sql INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...); ``` 2. 单条INSERT语句插入多条记录: ```sql INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...; ``` 在这种方式中,可以在一个INSERT语句中包含多个值集合,每个值集合代表表中的一行数据。 3. 使用多个INSERT语句(不推荐,因为效率较低): ```sql INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...); INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...); ... ``` 4. 使用WITH语句结合UNION ALL进行批量插入(适用于Oracle 11g及以上版本): ```sql WITH data_to_insert AS ( SELECT 列1, 列2, ... FROM DUAL UNION ALL SELECT 列1, 列2, ... FROM DUAL ... ) INSERT INTO 表名 (列1, 列2, ...) SELECT 列1, 列2, ... FROM data_to_insert; ``` 在执行插入操作时,需要注意以下几点: - 列的顺序应与值的顺序相匹配,除非明确指定了列名。 - 如果表中设置了主键或唯一约束,插入的每条记录的这些字段值必须是唯一的。 - 如果表中有非空字段或设置了默认值,那么在插入记录时必须提供相应的值,否则需要提供允许NULL值的字段。 使用批量插入可以减少数据库的I/O操作次数,提高数据插入效率,尤其是在插入大量数据时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值