Sequências |
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; |
Realizado por Turtle Learning ®. Última alteração em 2020-04-28