Consultor Eletrônico



Kbase 47395: Criação Sequence Oracle
Autor   Marco Aurelio Scheidt - CAT
Acesso   Público
Publicação   21/03/2012
Abaixo um script que pode ser útil caso o cliente venha perder as sequences do Oracle.

Nesse caso o script cria somente a sequence relacionada a coluna progress_recid de cada tabela, as demais sequences de negócio tem que ser criada com os scripts da expedição.

O comando abaixo faz criação das sequences, onde basta substituir XPTO pelo nome do usuário conectado no Oracle.

declare
v number;
e_ja_existe exception;
pragma exception_init (e_ja_existe, -955);
begin
for c in (select table_name from dba_tables where owner = 'XPTO' ORDER BY table_name) loop
execute immediate 'select max(progress_recid) from ' || c.table_name into v;
begin
execute immediate 'create sequence ' || c.table_name || '_seq start with ' || NVL(v,1);
exception
when e_ja_existe then null;
end;
end loop;
exception
WHEN OTHERS THEN NULL;
end;
/

O comando abaixo cria um arquivo com os comandos de CREATE SEQUENCE.

set serveroutput on
spool c:\temp\create_sequence.sql;

declare
v number;
e_ja_existe exception;
pragma exception_init (e_ja_existe, -955);
begin
for c in (select table_name from dba_tables where owner = 'XPTO' ORDER BY table_name) loop
execute immediate 'select max(progress_recid) from ' || c.table_name into v;
begin
dbms_output.PUT_LINE('create sequence ' || c.table_name || '_seq start with ' || NVL(v,1) || ';');
exception
when e_ja_existe then null;
end;
end loop;
exception
WHEN OTHERS THEN NULL;
end;
/

spool off;