PL-SQL Procedures en OracleSi sabes cómo se debe usar la cláusula UNION del comando SELECT en las consultas a la Base de Datos en tus PL-SQL Procedures en Oracle, podrás construir en una sola query todos los datos que obtengas de distintas fuentes de datos. Muchas veces ocurre que en una consulta SELECT en los PL-SQL Procedures en Oracle se deben traer datos de distintas fuentes pero que están relacionados de una u otra forma.

Muchos desarrolladores optan por construir querys separadas para traer los datos de cada una de las fuentes en los PL-SQL Procedures en Oracle, pero esa forma de construir no es la más óptima ya que te tomará mucho más tiempo hacer las cosas por separado resultando un proceso ineficiente.

Para solucionar este problema Oracle provee la cláusula UNION en el comando SELECT la que permite unir una o varias querys en una sola consulta a la Base de Datos lo que resulta ser muy eficiente ya que solo se debe procesar una sola vez la consulta en tus PL-SQL Procedures en Oracle.

La cláusula UNION por si sola permite unificar los datos al unir las querys, es decir, si la primera query trae una fila de datos que también existe en la segunda query solo se muestra la primera y no ambas, evitando así que se muestren datos repetidos en tus PL-SQL Procedures en Oracle. UNION también cuenta con la variante ALL la que realiza el efecto contrario de usar solo UNION, es decir, permite mostrar todas las filas de todas las querys aunque se encuentren duplicadas en tus PL-SQL Procedures en Oracle. Revisemos un ejemplo que permita entender mejor como usar la cláusula UNION en tus PL-SQL Procedures en Oracle.

Ejemplo #1: Supone que debes mostrar todos los empleados de un departamento que tengan de 21 hasta 25 años que sean solteros, que tengan 26 hasta 30 años que estén casados y los que tengan más 30 que estén solteros o casados. Si te das cuenta esta consulta no se puede hacer en una sola query ya que se deben realizar filtros distintos para cada una, veamos cómo se hace esta consulta:

TÚ REPORTE: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”

¡ Haz Click Aquí y Descárgalo GRATIS Ahora !

/* PL-SQL Procedures en Oracle */

Select

Dep.nombre_dep,

Emp.nombre_emp,

Emp.edad,

Decode(Emp.estado_civil,1,’Soltero’,2,’Casado’) estado_civil

From tb_empleado emp, t_departamento dep

Where dep.id_departamento = pin_id_departamento

And emp.id_empleado = dep.id_empleado

And emp.edad between 21 and 25

And emp.estado_civil = 1 –1= soltero

UNION /* PL-SQL Procedures en Oracle */

Select

Dep.nombre_dep,

Emp.nombre_emp,

Emp.edad,

Decode(Emp.estado_civil,1,’Soltero’,2,’Casado’) estado_civil

From tb_empleado emp, t_departamento dep

Where dep.id_departamento = pin_id_departamento

And emp.id_empleado = dep.id_empleado

And emp.edad between 26 and 30

And emp.estado_civil = 2 –2= Casado

UNION ALL /* PL-SQL Procedures en Oracle */

Select

Dep.nombre_dep,

Emp.nombre_emp,

Emp.edad,

Decode(Emp.estado_civil,1,’Soltero’,2,’Casado’) estado_civil

From tb_empleado emp, t_departamento dep

Where dep.id_departamento = pin_id_departamento

And emp.id_empleado = dep.id_empleado

And emp.edad > 30

And emp.estado_civil in (1,2) –1= Soltero, 2= Casado;

En este ejemplo se están uniendo 3 querys con la cláusula UNION, cada query tiene filtros diferentes, pero están mostrando los mismos campos como salida, para que las querys se unan correctamente deben tener los mismos campos de salida en el mismo orden y del mismo tipo de dato en tus PL-SQL Procedures en Oracle, de lo contrario Oracle generará un error al compilar o en tiempo de ejecución. Fíjate que en la última query use el UNION ALL para indicar que se muestren todas las filas de la consulta aunque existan en las querys anteriores.

Te propongo que pruebes de inmediato este ejemplo en tu Base de Datos con tus propios PL-SQL Procedures en Oracle y PL-SQL Function en Oracle, para que comiences a ejercitar la mano y aprendas a dominar esta nueva técnica en tus PL-SQL Packages en Oracle.

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 PL-SQL Procedures en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con PL-SQL Procedures 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 Solo 7 Pasos