Está en la página 1de 5

Buenas Prcticas de Desarrollo en PL/SQL

Objetivo: Describir principios generales estableciendo el marco necesario para


asegurar caractersticas comunes, de manera de facilitar el desarrollo y
mantenimiento de aplicaciones.

1. Pauta para variables y estructuras de datos

Declarar, definir el tipo, inicializar y asignar valor por defecto a las


estructura dedatos antes de trabajar con ellas

En las declaraciones que se relacionan a tablas y columnas utilizar


la clusula
%TYPE y %ROWTYPE.

En los datos numricos, definir la precisin. Oracle soporta hasta 38


dgitos de precisin en los tipos NUMBER, s i n o s e d e f i n e e n
forma correcta se est derrochando memoria.

Usar declaracin de constantes para valores que no


c a m b i a n d u r a n t e l a ejecucin del programa.

Siempre que sea posible, utilizar el tipo de dato


RECORD para manejar estructuras.

Realizar inicializaciones complejas de variables en la seccin de


ejecucin deprograma.

Reemplazar expresiones complejas con variables booleanas y funciones.

Remover variables y cdigo no usado.

Utilizar rutinas de cierre o limpieza cuando los


p r o g r a m a s t e r m i n a n ( e n ejecucin normal o por error)

Tener cuidado con las conversiones implcitas de tipos de datos.


2. Pauta para declaracin y uso de var iables de paquetes.

Agrupar los tipos de datos, evitar su exposicin y controlar su manipulacin.

Definir las constantes que son referenciadas por toda la


a p l i c a c i n e n u n paquete nico.

Definir las constantes que corresponden a un rea


e s p e c f i c a d e n t r o d e u n paquete que encapsula esa funcionalidad

Centralizar las definiciones de Types en las especificaciones del paquete.

Disminuir el uso de variables globales en paquetes y en caso de hacerlo,


solo enel cuerpo del paquete

Exponer las variables globales de los paquetes usando get and set.

3. Pautas para el uso de estructuras de Control

Nunca se sale de una estructura repetitiva con


RETURN o con EXIT

Un FOR loop itera desde el valor de comienzo hasta el valor de


terminacin(ciclo N).

Un WHILE loop itera mientras no se cumpla la condicin de terminacin.


(Ciclo0).

Existe un LOOP con control de la condicin al final de ciclo (ciclo 1). Es


LOOP EXIT WHEN condicin lgica.

Una funcin debe tener un nico RETURN exitoso como


ltima lnea de laseccin ejecutable. Normalmente, cada
m a n e j a d o r d e e x c e p c i o n e s p u e d e retornar un valor.

Nunca declarar el ndice de un FOR ..LOOP.

Al utilizar la clusula ELSIF, asegurarse que las condiciones son


excluyentes

En el caso de sentencias que deban ingresar en un condicional si


o si, se debelanzar una excepcin en caso de que esto no ocurra y no
presuponer que nuncase cumplir la condicin.
Reemplazar y simplificar el IF con variables booleanas

4. Pautas para el manejo de excepciones

Establecer los lineamientos para el manejo de errores antes de


comenzar a codificar.

Utilizar el modelo por defecto de manejo de excepciones


p a r a p r o p a g a r l a comunicacin de errores.

Capturar todas las excepciones y convertir el significado de los cdigos de


erroren los retornos a programas que no son PL/SQL

Usar procedimientos propios de RAISE e n l u g a r d e l a s l l a m a d a s


e x p l i c i t a s a RAISE_APPLICATION_ERROR.

No sobrecargar una EXCEPTION con mltiples errores al menos que la


prdida de informacin sea intencional.

No Manejar excepciones que no pueden evitarse, pero si anticiparse.

Evitar exponer cdigo en duro para el mane jo de errores,


r e e m p l a z a r p o r procedimientos que administren los mismos

Usar nombres constantes para flexibilizar los nmeros y mensajes de


errores deaplicacin

Usar WHEN OTHERSs o l o para excepciones


d e s c o n o c i d a s q u e d e b e n s e r ejecutadas.
5. Pautas mnimas para uso de SQL dentro de PL/SQL

Usar transacciones autnomas para aislar los efectos del


ROLLBACK y COMMIT

No utilizar COMMIT o ROLLBACK dentro de los procedimientos


PL/SQL que son utilizados por procesos en otros leguajes. El
COMMIT o ROLLBACK debe utilizarse dentro del proceso que llama los
procedimientos PL/SQL.

Usar COUNT solo cuando es necesario saber el nmero de ocurrencias.

Usar cursores implcitos para realizar operaciones sobre muchos registros

Nunca usar cursores implcitos para una fila

Parametrizar cursores explcitos

Usar RETURNING para obtener informacin sobre filas modificadas

Referenciar atributos del cursor inmediatamente despus


d e e j e c u t a r l a operacin de SQL.

Usar BULK COLLECT para mejorar la performance de los querys


multiregistros.

Usar FORALL para mejorar la performance de DML basados en arreglos


6. Reglas generales para performance

Una sentencia SQL es ms rpida que un programa

Un programa pequeo es ms rpido que uno extenso.

Evitar llamadas repetitivas al sql engine

Los queries deben ser optimizados

Utilizar los features de performance de SQL y de PL/SQL de las versiones


que see s t n u t i l i z a n d o s o l a m e n t e p a r a m a n e j o d e g r a n d e s
v o l m e n e s d e d a t o o cuando la aplicacin lo justifique.

Aprender los features de cada versin