Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2010, 08:36
phidalgo
 
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 3 meses
Puntos: 1
CURSOR arroja Column ... cannot be null cuando consulta es vacia

Estimados, tengo un CURSOR del que obtengo 2 parámetros para luego pasarselos a otro CURSOR. El problema es que hay veces en que la respuesta es simplemente vacia y al intentar hacer un volcado de los datos con el FETCH me aparece:

Column 'id_tarj' cannot be null


Código SQL:
Ver original
  1. BEGIN
  2.  
  3. DECLARE IDACTA INTEGER;
  4. DECLARE NROSECCION INTEGER;
  5. DECLARE IDTARJ INTEGER;
  6. DECLARE doneC1 BOOLEAN DEFAULT FALSE;
  7. DECLARE TPROD FLOAT;
  8.  
  9. DECLARE C1 CURSOR FOR
  10. (
  11.     SELECT a.id_acta,seccion_tarj
  12.     FROM `pro_tarja` p, acta a
  13.     WHERE p.id_acta=a.id_acta AND a.id_empr=IDEMPR
  14. );
  15. DECLARE C2 CURSOR FOR
  16. (
  17.     SELECT
  18.     id_tarj, SUM(totproddia_noti) AS totPROD
  19.     FROM notificacion n,acta a, secuencia s, pro_tarja p
  20.     WHERE
  21.     n.id_acta=a.id_acta AND a.id_acta=s.id_acta AND n.id_secu=s.id_secu AND
  22.     p.id_acta=a.id_acta AND p.seccion_tarj=s.numseccion_secu
  23.     AND n.id_acta          =IDACTA
  24.     AND s.numseccion_secu  =NROSECCION
  25. );
  26. DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'
  27. BEGIN
  28.     SET doneC1 = TRUE;
  29. END;
  30.  
  31. -- abro el cursor 1
  32. OPEN C1;
  33.  
  34.     C1_loop:
  35.      LOOP  
  36.                 -- por cada registro encontrado llamo al cursor 2 con las variables requeridas
  37.         FETCH C1 INTO IDACTA, NROSECCION;  
  38.          
  39.         IF `doneC1` THEN LEAVE C1_loop; END IF;      
  40.                
  41.         OPEN C2;
  42.             FETCH C2 INTO IDTARJ,TPROD;
  43.                 -- AQUI EL ERROR ..y unas rutinas que no importan
  44.         CLOSE C2;
  45.  
  46.      END LOOP C1_loop;      
  47.  
  48. CLOSE C1;  
  49.  
  50. END

Porfa una orientación de como puedo abordar este tema.
Gracias!!
__________________
-La duda es la base del conocimiento-