¿Cuándo se deben usar las Variables Públicas o Globales?

Saber cuándo se deben usar las variables públicas o globales dentro de un Packages en Oracle es algo muy importante que un desarrollador de Oracle debe dominar muy bien, ya que el uso indiscriminado de estas puede causar muchos problemas en el flujo correcto de los procesos.

Las Variables Públicas son una herramienta de Oracle muy fácil de implementar, se declaran en el SPEC o BODY del package, entregan comodidad al desarrollador el que muchas veces abusa en su uso, pero cuidado, las Variables Públicas son muy peligrosas si no se controlan con cuidado, porque como su nombre lo indica son de uso público, es decir, son visibles dentro de cualquier lugar del Package o incluso dentro de otro Package que esté relacionado con el proceso y pueden ser manipuladas muy fácilmente, esto significa que sus valores pueden ser modificados a placer por cualquier proceso causando graves problemas en la ejecución correcta de los procesos. Además pueden coincidir los nombres de las variables con las de otro Package o pueden no estar declaradas en un Procedure que las utiliza lo que genera errores en la compilación causando muchos dolores de cabeza.

Muchos desarrolladores usan variables públicas solo para su comodidad, ya que permiten evitar el esfuerzo de tener que usar parámetros de entrada y salida en los Procedures en Oracle y Function en Oracle, esto es un grave error que a la larga cuesta muy caro, ya que a medida que los procesos del package van creciendo se va haciendo mucho más difícil controlar este tipo de variables.

Yo recomiendo que nunca se usen Variables Públicas en los Packages en Oracle y siempre se prefiera el uso de parámetros de entrada y salida, solo se deben usar en algún caso extremo cuando después de haber probado todo lo que es posible hacer y no exista otra solución, siempre tomando los siguientes resguardos:

  1. Colocar un nombre descriptivo que haga referencia a los procesos del Package para evitar que tenga el mismo nombre de una variable pública que este en otro Package.
  2. Solo usar la variable pública en caso de que esta deba cambiar de valor, en caso contrario, opte por usar una constante.
  3. Verifique que el proceso donde se usara la variable pública no lo ocupe o no sea llamado desde otro Package ya que la variable también deberá ser declarada en el Package llamador.
  4. Revisar que la variable sea iniciada o limpiada siempre con el valor que corresponda.

TÚ REPORTE: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”  ¡ Haz Click Aquí y Descárgalo GRATIS Ahora !

Ejemplo de Variables Públicas o Globales:

Package Body #1

CREATE OR REPLACE PACKEGE BODY PKG_EMPLEADOS AS

/* Variables Públicas o Globales */                                                                                     g_Edad_Mínima       Number (2)          := 20;

/* Procedures en Oracle */                                                                                                                Procedure PRC_BORRAR …                                                                                                    Begin

… PKG_DEPARTAMENTOS.PRC_CREAR;

End PRC_BORRAR;

/* Function en Oracle */                                                                                                      Function …

END PKG_EMPLEADOS;                                                                                                                  /

Package Body #2

CREATE OR REPLACE PACKEGE BODY PKG_DEPARTAMENTOS AS

/* Variables Públicas o Globales */                                                                g_Edad_Mínima       Number (2)          := 25;

/* Procedures en Oracle */                                                                                                                Procedure PRC_CREAR …                                                                                                        Begin

g_Edad_Mínima:= 0;

End PRC_CREAR;

/* Function en Oracle */                                                                                                      Function …

END PKG_DEPARTAMENTOS;                                                                                                     /

En este ejemplo se puede apreciar lo siguiente:

  1. En el Package PKG_EMPLEADOS se define la variable pública g_edad_minima con el valor inicial 20.
  2. En el Package PKG_DEPARTAMENTOS también se define la variable pública g_edad_minima con el valor inicial 25.
  3. El Procedure PRC_BORRAR del PKG_EMPLEADOS está llamando al Procedure PRC_CREAR del PKG_DEPARTAMENTOS, este último está iniciando la variable publica g_edad_minima con valor 0.
  4. Aquí se está generando una inconsistencia de datos al no tener controlada una variable global.

Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de Packages en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con Packages en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.

Saludos

Roberto Vicencio – Escritor del Reporte:

Cómo Construir un SELECT Eficiente en ORACLE en 7 Pasos

Esta entrada fue publicada en Packages en Oracle y etiquetada , , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s