Saber usar eficientemente la función COUNT te permitirá contar datos más rápidamente consiguiendo además escribir una menor cantidad de código fuente.
La función COUNT como su nombre lo indica te permite contar datos que cumplan ciertos requisitos, pero también es muy eficiente cuando se necesita buscar si existe algún dato en particular dentro de la Base de Datos.
Veamos un ejemplo práctico que te permita entender mejor el uso de la función COUNT.
Ejemplo #1: Supongamos que se quiere contar la cantidad de registros que cumplen cierta condición.
begin
into lin_cant_reg
from t_emplado emp
where emp.edad > 30;
exception
when no_data_found then lin_cant_reg:= null;
end;
Si bien este ejemplo esta contando correctamente los empleados cuya edad sea mayor a 30 años, existe código que está demás y no presta ninguna utilidad, lo que no significa que este malo pero es código que solo abulta nuestros procesos y debe ser borrado, como por ejemplo el uso del asterisco ‘*’ como argumento en la función COUNT el que permite contar todos registros que devuelva el comando SELECT, pero es vez de usar el asterisco se puede usar el nombre del campo ID de la tabla que en este caso es ID_EMPLEADO o solo especificar en número 1 que hace referencia al mismo campo. Al usar el nombre de una columna se contaran todos los datos que no estén nulos de la columna indicada y en este caso el campo ID siempre tendrá datos al ser un campo NOT NULL.
TÚ REPORTE: «Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos» ¡ Haz Click Aquí y Descárgalo GRATIS Ahora !
El otro código que está demás es el bloque BEGIN EXCEPTION END porque la función COUNT siempre va a devolver un registro, si encuentra datos va ha devolver la cantidad de registros que encontró, pero si no encuentra registros va ha devolver un cero ‘0’, por lo tanto nunca va ha devolver NULL y el bloque EXCEPTION nunca se va ha activar. La mejor forma de usar el COUNT en este ejemplo es eliminar el uso del asterisco y eliminar el uso del bloque BEGIN EXCEPTION END, por lo que en definitiva la consulta para contar registros quedaría así:
into lin_cant_reg
from t_emplado emp
where emp.edad > 30;
if lin_cant_reg > 0 then
Update …
end if;
Esta consulta siempre va a retornar un valor en la variable lin_cant_reg, esto va ha ocurrir con todas las funciones de grupo de datos, por ejemplo SUM, MAX, MIN, etc. Por lo tanto no es necesario incluir una exception para controlar el error de datos no existentes, ya que si la consulta no pudo encontrar datos la función COUNT va ha devolver siempre un cero.
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:
Muy interesante la aclaracion al respecto. Pero quisiera aprovechar tus conocimientos para hacerte una pregunta cual de estos comando procesa mas rapido el comando COUNT to o SELECT COUNT por favor si puedes escribirme tu respuesta o sugerencia a este correo urbina_cr@hotmail.com
Hola Cristhian, el comando COUNT TO desconozco que exista en ORACLE ya que en este solo se usa la función COUNT() con el comando SELECT, la velocidad de respuesta siempre va a depender del tamaño de la o las tablas y los filtros que se apliquen para contar lo que buscas, espero haber respondido tu pregunta.
Saludos
Roberto Vicencio.
Hola amigo, he visto que programadores ocupan count solo pra validar la existencia de un valor, que se debería ocupar en ese caso?
Hola Joaquin, gracias por comunicarte, también es correcto usar el count para buscar datos, otra forma es usando excepciones.
PD: Ya viste mi guía sobre “Cómo Crear SELECT Eficientes en ORACLE en Solo 7 Pasos”, si aun no la tienes en tus manos puedes obtenerla gratis desde aquí: http://dominatuspackagesenoracle.com/blog/cmrz
PD2: Si te ha gustado lo que has visto del blog te invito a compartir el enlace http://dominatuspackagesenoracle.com/blog/cmbl/ con tus amigos o personas que también les pueda interesar ver esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.