Oracle一次获取多个序列值
- SQL 语句一次获取多个序列值
- 获取序列中的多个值
- connect by level 生成多行数据
- JDBC 一次获取多个序列值
- MyBatis 一次获取多个序列值
SQL 语句一次获取多个序列值
获取序列中的多个值
创建序列
CREATE SEQUENCE test_user_seq;
获取一个序列值
SELECT test_user_seq.nextval FROM dual;
有一个比较传统的方法构造多行数据,就是使用union all
SELECT 1 FROM DUAL
UNION ALL
SELECT 1 FROM DUAL
生成多行数据的方法有了,那么一次生成多个序列的方法也有了
SELECT test_user_seq.nextval
FROM (
SELECT 1 FROM DUAL
UNION ALL
SELECT 1 FROM DUAL)
综上所述,一次获取多个序列值需要生成多行数据
connect by level 生成多行数据
union all 生成多行数据这个方法,性能比较差,当需要的序列比较多的时候,SQL 比较长,数据库解析SQL 耗时也多,而且还需要拼接sql, 使用
connect by level 生成多行数据就比较方便
select level from dual connect by level <= 5;
一次生成了5行数据,那么就可以用这个方式,获取5个序列值
SELECT test_user_seq.nextval FROM (
select level from dual connect by level <= 5
);
需要生成几个序列值,修改一下 level 的数量就可以,非常简洁