创建序列

原创 2017年07月17日 17:48:29

例子:新建一个序列,每日凌晨0点序列初始值置为0

1、创建序列 BOOKING_Y_SO_NO_SEQ

create sequence BOOKING_Y_SO_NO_SEQ minvalue -999999 maxvalue 999999 start with 1 increment by 1 Nocache order;

2、创建存储过程 MODIFY_BOOKING_Y_SO_NO_SEQ, 把序列号初始值置为1

create or replace procedure MODIFY_BOOKING_Y_SO_NO_SEQ
as
   vn_number       number; 
   vr_sequence  user_sequences%rowtype;
Begin
    select * into vr_sequence from user_sequences t where t.sequence_name='BOOKING_Y_SO_NO_SEQ';

    execute immediate 'alter sequence '||'BOOKING_Y_SO_NO_SEQ'||' increment by '||(1-vr_sequence.last_number)|| ' nocache';
     Select BOOKING_Y_SO_NO_SEQ.Nextval  into vn_number from dual;
    execute immediate 'alter sequence '||'BOOKING_Y_SO_NO_SEQ'||' increment by 1 nocache'; 
exception
   when others then
      null;
end MODIFY_BOOKING_Y_SO_NO_SEQ;

3、创建JOB定时(每天凌晨执行存储过程MODIFY_BOOKING_Y_SO_NO_SEQ);

declare      
  job number;
begin
  sys.dbms_job.submit( job => :job,
  what => 'MODIFY_BOOKING_Y_SO_NO_SEQ;',
  next_date => to_date('12-01-2017 14:17:01', 'dd-mm-yyyy hh24:mi:ss'),
  interval => 'TRUNC(SYSDATE + 1)');--每日凌晨执行一次
  commit;
end;
/

JOB常用属性值

Job

  • 查看所有job:select * from dba_jobs;
  • 查询运行中的JOB:select * from dba_jobs_running;
  • 删除job

    begin   
        dbms_job.remove(:job);//  :job可以用dba_jobs.job的值代替如:664 
    end;
    

存储过程

  • 查询所有存储过程 select * from user_procedures;
  • 删除存储过程 drop procedure MODIFY_BOOKING_Y_SO_NO_SEQ;

序列

  • 查询所有序列 select * from user_sequences;
  • 创建序列 create sequence BOOKING_Y_SO_NO_SEQ minvalue -999999 maxvalue 999999 start with 1 increment by 1 Nocache order;
  • 删除序列 drop sequence BOOKING_Y_SO_NO_SEQ;
  • 查询序列序列下一个值 select BOOKING_Y_SO_NO_SEQ.Nextval from dual;
  • 查询序列当前值 select BOOKING_Y_SO_NO_SEQ.currval from dual;

队列

1、创建一个集合类型的对象(其实就是你所需要的队列表的表结构)

CREATE OR REPLACE Type mt_struc As Object
( id number(5) ,
  name varchar2(30),
  age varchar2(30)
) ;

2、创建队列表

begin
   sys.dbms_aqadm.create_queue_table(queue_table=>'sms_mt_tab', queue_payload_type=>'mt_struc');
end ;

begin
   sys.dbms_aqadm.create_queue_table(queue_table=>'tets_jms_queueb', queue_payload_type=>'MESSAGE') ; --箱管的是 EEIR.MESSAGE
end ;
版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle序列的创建、删除和使用

-- Create sequence  create sequence 序列名 minvalue 1  maxvalue 999999999999999999999999999 start with ...
  • gjb724332682
  • gjb724332682
  • 2015年07月24日 15:22
  • 2678

oracle表中怎么创建序列

oracle序列的创建: create sequence seq_newsId increment by 1 start with 1 maxvalue 999999999; 获得o...
  • qilixiang012
  • qilixiang012
  • 2014年07月12日 21:42
  • 11786

oracle中创建序列以及序列使用注意事项

oracle中创建序列以及序列使用注意事项 1.oracle是通过序列(sequence)来处理自动增长列 用法: create sequense my_seq   //创建序列名:my_s...
  • zhengqiqiqinqin
  • zhengqiqiqinqin
  • 2013年06月09日 23:33
  • 14895

Oracle在创建序列(sequence)时有个参数你可以选择cache或者nocache

Oracle在创建序列(sequence)时有个参数你可以选择cache或者nocache,下面来讲一下两者的区别: 先来看下创建sequence的语句: create sequence SEQ_...
  • u012143723
  • u012143723
  • 2014年03月26日 20:43
  • 2304

Oracle创建序列,删除序列,得到序列的例子

Oracle创建序列,删除序列,得到序列的例子 序列的创建 create sequence seq_newsId increment by 1 start with 1 maxval...
  • deepwishly
  • deepwishly
  • 2014年09月03日 14:33
  • 1225

DB2序列简介及使用

DB2序列简介及使用   一、创建序列 序列是按照一定的规则生产的数值,序列的作用非常的大,比如银行交易中的流水号,就是记录每笔交易的关键字段。 通过create sequen...
  • qq1099866969
  • qq1099866969
  • 2014年03月12日 09:28
  • 1910

通过PL/SQL创建序列和触发器实现表自增字段

创建序列 创建触发器
  • mypowerhere
  • mypowerhere
  • 2017年06月28日 15:13
  • 2021

PostgreSQL 序列使用

今天遇到的一个问题,postgrelsql出现的duplicate key value violates unique constraint "字段名",查询后发现报错出的数值小于字段所在表中已存在的...
  • huwei0518
  • huwei0518
  • 2015年02月06日 13:50
  • 2245

oracle的序列使用,创建、表中调用、主键自动生成

Oracle的序列原理是先根据需求建立个序列,然后在表insert数据时应用某个序列,因此序列是公用的。也就是说如果一个表用了一个序列,起始1递增1,如果已经递增使用到100,用另一个表也引用这个序列...
  • sunqian_90
  • sunqian_90
  • 2014年05月19日 09:54
  • 2300

在MySQL中创建实现自增的序列(Sequence)的教程

项目应用中,曾有以下一个场景: 接口中要求发送一个int类型的流水号,由于多线程模式,如果用时间戳,可能会有重复的情况(当然概率很小)。 所以想到了利用一个独立的自增的sequence来解决该问题...
  • Angel_G
  • Angel_G
  • 2016年11月12日 09:43
  • 1708
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创建序列
举报原因:
原因补充:

(最多只允许输入30个字)