| 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