Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2012, 21:58
Amphoth3ra
 
Fecha de Ingreso: mayo-2011
Mensajes: 26
Antigüedad: 13 años, 7 meses
Puntos: 1
MySQL Función IFNULL en un procedimiento

Voy a explicar un poco el contexto, tengo una tabla de inscripción de alumnos en un determinado semestre, y una de cursos donde están los detalles de cada uno de los cursos, uno de esos datos son los créditos.

En un semestre un alumno no puede tomar más de 21 créditos, por lo cual se me asigna hacer un procedimiento en el que se cuenten los créditos aún disponibles en este semestre consultando a un alumno por su rut. Para ello debo revisar los créditos de un alumno sumándolos (usando una función SUM()) y luego restar 21.

Todo esto lo desarrollé en el procedimiento que se ve más abajo.

Código MySQL:
Ver original
  1. CREATE PROCEDURE creditos_alumno (IN rut VARCHAR(10))
  2. DECLARE var1 INT;
  3. SET var1 = 21 - (SELECT SUM(a.creditos) FROM asignaturas a, inscripciones i
  4. WHERE a.sigla = i.sigla
  5. AND rut=i.rut
  6. AND i.semestre = "2012-1");
  7. SELECT IFNULL(var1,21);

Si la suma de créditos inscritos es 0, entonces se devuelve 21, en caso contrario, se devuelve la resta entre 21 y la suma de créditos inscritos. Esto, lo resolví mediante la función IFNULL. ¿Porqué la usé? Porque si hago el SELECT a la variable var1 de la suma de créditos, me va a devolver en la línea de comandos un valor NULL cuando quiera consultar un alumno que no ha inscrito ramos (debería dar 21).

Mi duda es la siguiente: Aunque la función IFNULL funciona bien, estéticamente no se ve muy bien para la línea de comandos, la idea es que no me tire IFNULL(var1,21) con los créditos restantes sino que un nombre más adecuado. ¿Existe otra forma de realizar lo mismo que hace la función IFNULL sin tener que usar la función IFNULL? Se me ocurre usar una variable auxiliar y un IF pero las veces que lo he probado me han tirado errores al crear el procedimiento.

De antemano gracias.

Saludos.