SQL em Oracle > DDL > Sequências
Sequências tl_logo2.jpg

Até à versão 12 o SGBD oracle não tinha o "datatype" "auto-number". Em vez disso disponibilizava os objectos do tipo "Sequence" (sequência), que podem ser usados para gerar números incrementais, sempre diferentes. A característica mais importante deste objecto é a CACHE. No exemplo abaixo a cache tem o valor 10, o que significa que o Oracle gera 10 valores diferentes que podem ser consumidos por 10 pedidos em simultâneo.

Sintaxe genérica para criar uma sequência:

CREATE SEQUENCE <sequence_name> 
INCREMENT BY <integer> 
START WITH <integer>
MAXVALUE <integer> / NOMAXVALUE 
MINVALUE <integer> / NOMINVALUE 
CYCLE / NOCYCLE
CACHE <#> / NOCACHE 
ORDER / NOORDER; 

Segue um exemplo de criação de uma sequência:

create sequence  SALES_ORDER_ID 
	increment by 1
	start with 20000
	order
	cache 10;

A sequência possui dois métodos importantes: NEXTVAL e CURRVAL. O método NEXTVAL permite obter o próximo valor gerado pela sequência, provocando o incremento da estrutura de controlo associada. Este método é invocado da forma descrita no exemplo abaixo, com SELECT, e de mesma forma pode ser incluído numa instrução INSERT ou UPDATE:

select SALES_ORDER_ID.nextval from dual; 

O próximo exemplo usa esta sequência num comando INSERT:

drop table teste;
create table teste (
    id number not null,
    nome varchar2(100 char)
);
insert into teste (id,nome) values (SALES_ORDER_ID.nextval, 'aaaaaaaaa'); 
insert into teste (id,nome) values (SALES_ORDER_ID.nextval, 'bbbbbbbbb'); 
insert into teste (id,nome) values (SALES_ORDER_ID.nextval, 'ccccccccc'); 
commit;
select * from teste;

bthome.gifTopo


Realizado por Turtle Learning ®. Última alteração em 2020-04-28