Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/01/2010, 08:58
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: CURSOR arroja Column ... cannot be null cuando consulta es vacia

Pon ese cursor en un IF donde compruebes que el parámetro es NOT NULL..
Código MySQL:
Ver original
  1.  
  2. DECLARE NROSECCION INTEGER;
  3. DECLARE TPROD FLOAT;
  4.  
  5. DECLARE C1 CURSOR FOR
  6. (
  7.     SELECT a.id_acta,seccion_tarj
  8.     FROM `pro_tarja` p, acta a
  9.     WHERE p.id_acta=a.id_acta AND a.id_empr=IDEMPR
  10. );
  11. DECLARE C2 CURSOR FOR
  12. (
  13.     SELECT
  14.     id_tarj, SUM(totproddia_noti) AS totPROD
  15.     FROM notificacion n,acta a, secuencia s, pro_tarja p
  16.     WHERE
  17.     n.id_acta=a.id_acta AND a.id_acta=s.id_acta AND n.id_secu=s.id_secu AND
  18.     p.id_acta=a.id_acta AND p.seccion_tarj=s.numseccion_secu
  19.     AND n.id_acta          =IDACTA
  20.     AND s.numseccion_secu  =NROSECCION
  21. );
  22. DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'
  23.     SET doneC1 = TRUE;
  24.  
  25. -- abro el cursor 1
  26. OPEN C1;
  27.  
  28.     C1_loop:
  29.      LOOP  
  30.                 -- por cada registro encontrado llamo al cursor 2 con las variables requeridas
  31.         FETCH C1 INTO IDACTA, NROSECCION;  
  32.          
  33.         IF `doneC1` THEN
  34.             LEAVE C1_loop;
  35.         ELSEIF C1 IS NOT NULL;
  36.             OPEN C2;
  37.                 FETCH C2 INTO IDTARJ,TPROD;
  38.             CLOSE C2;
  39.         END IF;      
  40.      END LOOP C1_loop;      
  41.  
  42. CLOSE C1;  
  43.  
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)