¡Peligro, Nunca Dupliques Código Fuente

en Programas PL/SQL o te Pasara Esto! 

Muchas veces cuando estas escribiendo código en tus PL/SQL Packages en Oracle, tiendes a repetir o duplicar una rutina de código porque debes aplicarla para más de un caso a la vez.

Esta táctica no es recomendable porque al final resulta ser muy peligrosa si el código sigue creciendo y no se mantiene correctamente.
 
Este método es peligroso porque si repites varias

veces un trozo de código fuente en tus PL/SQL Packages en Oracle, donde solo cambian un par de parámetros y el resto del código se mantiene igual, cuando debas realizar alguna modificación que afecta a cada código repetido, te olvidarás de aplicar el cambio en todas las partes.

Lo que producirá problemas en la ejecución de los procesos y el código fuente se volverá engorroso, ilegible e inmantenible en tus PL/SQL Packages en Oracle.

Para solucionar este problema debes utilizar el ciclo FOR, que permite básicamente ejecutar un mismo trozo de código mas de una vez de forma controlada, es decir, que puedes programar un ciclo FOR para que se repita las veces que sea necesario.

Para entender mejor esta problemática veamos algunos ejemplos en PL/SQL Packages en Oracle que sean prácticos.

Ejemplo #1: Supone que debes contar los empleados que se encuentran en 3 estados civiles diferentes, veamos la forma errónea y luego la forma correcta:

Forma errónea:

/* PL-SQL Packages en Oracle */

Select count(1) 
Into lin_cant_emp 
From t_empleado 
Where id_estado_civil = 1; — 1= Soltero

If lin_cant_emp > 50 then
      — procesar empleados
End if;

Select count(1) 
Into lin_cant_emp 
From t_empleado 
Where id_estado_civil = 2; — 2= Casado

If lin_cant_emp > 50 then
      — procesar empleados
End if;

Select count(1) 
Into lin_cant_emp 
From t_empleado 
Where id_estado_civil = 3; — 3= Separado

If lin_cant_emp > 50 then
      — procesar empleados
End if;

/* PL-SQL Procedures en Oracle */

Muchos desarrolladores tienden a realizar esto que esta erróneo.

En este ejemplo se esta repitiendo el código 3 veces para contar los empleados por cada estado civil diferente, lo único que cambia es el ID del estado civil y el resto del código se mantiene.

Si debes realizar un cambio debes tener la precaución de hacerlo en las tres partes repetidas en tus PL/SQL Packages en Oracle.

Forma correcta:

/* PL-SQL Packages en Oracle */

For lin_Id_Estado_Civil In 1..3
Loop
      Select count(1)
      Into lin_cant_emp
      From t_empleado
      Where id_estado_civil = lin_id_estado_civil;

      If lin_cant_emp > 50 then
            — procesar empleados
      End if;
End Loop;

/* PL-SQL Packages en Oracle */

En este ejemplo se ejecuta 3 veces un mismo trozo de código dentro de un ciclo FOR, donde lo único que cambia es el ID del estado civil el cual se obtiene de la variable lin_id_estado_civil que es actualizada por el ciclo FOR, esto es mucho mas eficiente.

A diferencia del ejemplo anterior, si debes realizar una modificación solo lo haces una vez y el cambio queda listo para todos los casos en tus PL/SQL Packages en Oracle.

La forma eficaz de resolver esto es haciendo lo siguiente:

/* PL-SQL Packages en Oracle */

For reg_empleado In (       Select
                                                 id_estado_civil,
                                                 count(1)  cant_emp
                                           From t_empleado
                                           Group By id_estado_civil )
Loop
      If reg_empleado.cant_emp > 50 Then
            — procesar empleados
      End if;
End Loop;

/* PL-SQL Packages en Oracle */

En este ejemplo se crea un cursor explicito dentro del ciclo FOR, donde se agrupa por el id_estado_civil para contar los empleados de cada uno de los estados.

Esta forma es la más eficaz de todas ya que la consulta a la base de datos se realiza solo una vez en tus PL/SQL Packages en Oracle.

Prueba de inmediato estos ejercicios en los programas que debas desarrollar en la Base de Datos Oracle y aplica lo aprendido en tus PL/SQL Procedures en Oracle y PL/SQL Function en Oracle.

Si te fijas en estos ejemplos solo ocupe unos SELECT simples de manera que sea fácil de entender, pero sé que en tu realidad necesitas crear consultas más complejas que esto, donde se ocupan muchas más tablas.

Por eso te recomiendo que veas la siguiente página donde explico porque debes dejar de usar SELECT simples y comenzar a usar SELECT de Múltiples Tablas…

Si combinas la técnica para crear SELECT Múltiples (que explico en video) con la técnica para no duplicar el código fuente estarás dando un gran paso para dominar el Lenguaje PL/SQL. Comienza ya a practicar estas técnicas y aplícalas en tus programas de Oracle.

 
 

Saludos,

Roberto Vicencio
Para Tu Éxito con Oracle