Padronização de objetos Oracle

De DTI Wiki

Ir para: navegação, pesquisa

Tabela de conteúdo

Construa SQL simples

Não escreva mais do que 50 linhas

Nossos padrões

Parâmetros na abertura dos cursores

INSERTs com declaração das colunas

Substituir os counts

Sempre que necessitar de um INSERT ou UPDATE, utilize MERGE, é mais rápido que qualquer outra construção

Substituição dos to_date(to_char(data, 'dd/mm/rrrr'), 'dd/mm/rrrr') por trunc(data) quando for para retirar os dados de time

Uso das funções EXTRACT(YEAR, MONTH e DAY

Retirar as funções nas cláusulas WHERE para melhor aproveitamento dos índices

Usar EXISTS / NOT EXISTS ao invés de IN / NOT IN

Evitar o uso de OR nas cláusulas WHERE

Evitar o uso de diferente nas cláusulas WHERE

Trocar as colunas LONGs por CLOBs (usando TO_LOB)

Não colocar COMMITs e/ou ROLLBACKs e/ou RAISE nos procedimentos PL/SQL, retornar códigos e mensagens para tratamento de erros (Facilita muito a reutilização de código

Prefixar com o nome do esquema todos os objetos de outros esquemas (tabelas, packages, procedures, functions, etc

Não inicializar variáveis com ' ', utilizar sempre NULL

Sempre tratar possíveis erros de SELECTs, INSERTs, UPDATEs e DELETEs

Preferir UNION ALL a UNION

Boas práticas - Oracle

Colocar ALIAS em todas as tabelas das cláusulas FROM e prefixar as colunas com os devidos ALIAS

Declarar como CONSTANT todas as variáveis que não serão alteradas pelo procedimento

Não criar SQLs dinâmicos com concatenação de literais, criar variáveis no código e invocá-lo passando parâmetros

Em grandes seleções de dados usar FETCH ... BULK COLLECT INTO .... LIMIT, onde 1000 é um bom limite. Utilizar constante para o limite

Quando é sabido o número máximo de linhas que o SELECT pode trazer, use SELECT ... BULK COLLECT INTO para buscar todos os registros em uma só vez

Ao selecionar exatamente uma linha, utilize SELECT ... INTO e faça uso das exceções NO_DATA_FOUND e TOO_MANY_ROWS

Usar FORALL para INSERTS, UPDATES, DELETES e MERGES sucessivos, erros podem ser tratados com BULK_EXCEPTIONS

Usar WHERE ... IN (SELECT ... FROM TABLE(...)) quando o número de elementos do IN for desconhecido

Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas