Padronização de objetos Oracle
De DTI Wiki
(+/-)
Esta é a
versão publicada
,
analisada
a
3 de agosto de 2009
.
Precisão
Objetiva
Profundidade
Básica
Inteligibilidade
Aceitável
Ir para:
navegação
,
pesquisa
Tabela de conteúdo
1
Construa SQL simples
2
Não escreva mais do que 50 linhas
3
Nossos padrões
3.1
Parâmetros na abertura dos cursores
3.2
INSERTs com declaração das colunas
3.3
Substituir os counts
3.4
Sempre que necessitar de um INSERT ou UPDATE, utilize MERGE, é mais rápido que qualquer outra construção
3.5
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
3.6
Uso das funções EXTRACT(YEAR, MONTH e DAY
3.7
Retirar as funções nas cláusulas WHERE para melhor aproveitamento dos índices
3.8
Usar EXISTS / NOT EXISTS ao invés de IN / NOT IN
3.9
Evitar o uso de OR nas cláusulas WHERE
3.10
Evitar o uso de diferente nas cláusulas WHERE
3.11
Trocar as colunas LONGs por CLOBs (usando TO_LOB)
3.12
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
3.13
Prefixar com o nome do esquema todos os objetos de outros esquemas (tabelas, packages, procedures, functions, etc
3.14
Não inicializar variáveis com ' ', utilizar sempre NULL
3.15
Sempre tratar possíveis erros de SELECTs, INSERTs, UPDATEs e DELETEs
3.16
Preferir UNION ALL a UNION
4
Boas práticas - Oracle
4.1
Colocar ALIAS em todas as tabelas das cláusulas FROM e prefixar as colunas com os devidos ALIAS
4.2
Declarar como CONSTANT todas as variáveis que não serão alteradas pelo procedimento
4.3
Não criar SQLs dinâmicos com concatenação de literais, criar variáveis no código e invocá-lo passando parâmetros
4.4
Em grandes seleções de dados usar FETCH ... BULK COLLECT INTO .... LIMIT, onde 1000 é um bom limite. Utilizar constante para o limite
4.5
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
4.6
Ao selecionar exatamente uma linha, utilize SELECT ... INTO e faça uso das exceções NO_DATA_FOUND e TOO_MANY_ROWS
4.7
Usar FORALL para INSERTS, UPDATES, DELETES e MERGES sucessivos, erros podem ser tratados com BULK_EXCEPTIONS
4.8
Usar WHERE ... IN (SELECT ... FROM TABLE(...)) quando o número de elementos do IN for desconhecido
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
Experimente o Beta
Autenticar-se
Espaços nominais
Página
Discussão
Variantes
Visualizações
Ler
Ver código-fonte
Ver histórico
Ações
Pesquisa
Navegação
Página principal
Mudanças recentes
Ajuda
Ferramentas
Páginas afluentes
Alterações relacionadas
Páginas especiais
Versão para impressão
Link permanente