oracle序列

oracle序列

创建序列

create sequence seq_test_1  //创建序列名称
minvalue 1                  //最小值  
maxvalue 100000             //最大值
start with 15               //序列起始值,递增默认是minvalue,递减默认是maxvalue
increment by 1              //递增的序列值是n,如果n是正数就递增,如果是负数就递减 默认是1
nocache;                    //分配并存入内存中:否
nocycle;                    //不循环

返回序列中下一个有效的值,任何用户都可以引用

  • SELECT SEQUENCE_NAME.NEXTVAL FROM DUAL;   eg:select seq_test_1.nextval from dual;

返回序列当前的值

  • SELECT SEQUENCE_NAME.CURRVAL FROM DUAL;  eg:select seq_test_1.CURRVAL from dual;

使用场景,实现id的自增

# 建表
create table cdpt(
id number(6),
name varchar2(30),
constraint pk_id primary key(id)
);

# 创建序列
Create sequence seq_cdpt
Increment by 1
Start with 1
Maxvalue 999999
Minvalue 1
Nocycle
nocache

# 实现主键自增
insert into cdpt values(seq_cdpt.nextval,'weifan');

# 查询验证
select * from cdpt;

修改序列,删除序列

  • Alter SEQUENCE xxx;
  • Drop SEQUENCE xxx;

实际应用(八位xx号,不足补零)

  • mapper
@MyBatisRepository
public interface PmcmoMapper {

    /*新增xx创建序列号*/
    void createSeq(@Param("seq_orgxx_cuid")String seq_orgxx_cuid);

    String getSeq(@Param("seq_orgxx_cuid")String seq_orgxx_cuid,@Param("length")String length,@Param("cover")String cover);
}
  • xml
<!-- 新增xx时创建序列号 -->
    <insert id="createSeq"  >
    create sequence ${seq_orgxx_cuid}
    minvalue 1
    maxvalue 99999999
    start with 1
    increment by 1
    cache 10
    </insert>
    <!-- 获取序列号 -->
    <select id="getSeq" resultType="java.lang.String"  parameterType="java.lang.String" useCache="false" flushCache="true">
    select lpad(${seq_orgxx_cuid}.nextval,${length}, ${cover}) from dual
    </select> 
  • oracle lpad函数
    语法格式如下:
      lpad( string, padded_length, [ pad_string ] )
      string
      准备被填充的字符串;
      padded_length
      填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;
      pad_string
      填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格。
  • oracle rpad函数
    与lpad函数对应的是rpad函数:
      rpad函数从右边对字符串使用指定的字符进行填充,语法格式与lpad格式相同:
      rpad(string,padded_length,[pad_string])
      string
      被填充的字符串
      padded_length
      字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,rpad函数将会把字符串截取成从左到右的n个字符;
      pad_string
      是个可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,lpad函数将会在string的右边粘贴空格。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值