Me parece que no estás entendiendo la idea:
El CURSOR lo usas para leer uno a uno un conjunto de registros dado, luego, con cada registro
si y sólo si no has superado el límite (SQLSTATE '02000'), haces un INSERT. Pero si has llegado al final, el último FETCH devuelve NULL y pone
done = 1, por lo que no entra en el IF que contiene el INSERT,
pero sí realiza la asignación de NULL a todas las variables.
¿Se entiende ahora?
A partir de ese último FETCH, ANYTRA contiene un NULL.
Para que te devuelva el valor de ANYTRA la idea sería:
Código MySQL:
Ver originalDELIMITER $$
/* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ */
DECLARE CUR_VENTAS_CLIENTE_REPRE CURSOR FOR
OPEN CUR_VENTAS_CLIENTE_REPRE;
FETCH CUR_VENTAS_CLIENTE_REPRE
INTO ANYTRA,MESTRA,NOMMES,NCUENTA,NOMCLIENTE,CODREPRE,N OMREPRE,
MES_ACTUAL_IMP,MES_ACTUAL_CANT,IMPBRU,DTOF AM,DTOART,DTOCAB,
DTOOTR,PRECIO,PRECOS,VAR_MES_ANT_ IMP,vAR_MES_ANT_IMP_PCT,VAR_MES_ANT_CANT,
VAR_MES_A NT_CANT_PCT,VAR_FIN_ANY_IMP,VAR_FIN_ANY_IMP_PCT,
VAR_FIN_ANY_CANT,VAR_FIN_ANY_CANT_PCT,VAR_INTERANUAL _IMP,
VAR_INTERANUAL_IMP_PCT,VAR_INTERANUAL_CANT,VA R_INTERANUAL_CANT_PCT,
VAR_PRESUPUESTO_IMP,VAR_PRES UPUESTO_IMP_PCT,VAR_PRESUPUESTO_CANT,
VAR_PRESUPUESTO_CANT_PCT;
/* Inserción de los registros de referencia agrupados por CLIENTE y REPRE */
VALUES(ANYTRA
, MESTRA
, NULL, NCUENTA
, NOMCLIENTE
, CODREPRE
, NOMREPRE
, MES_ACTUAL_IMP, MES_ACTUAL_CANT, IMPBRU, DTOFAM,
DTOART,DTOCAB,DTOOTR,PRECIO,PRECOS,
VAR_MES_ANT_I MP,vAR_MES_ANT_IMP_PCT,VAR_MES_ANT_CANT,
VAR_MES_AN T_CANT_PCT,VAR_FIN_ANY_IMP,VAR_FIN_ANY_IMP_PCT,
VAR _FIN_ANY_CANT,VAR_FIN_ANY_CANT_PCT,VAR_INTERANUAL_IMP,
VAR_INTERANUAL_IMP_PCT,VAR_INTERANUAL_CANT,VAR_INTERANUAL_CANT_PCT,
VAR_PRESUPUESTO_IMP,VAR_PRESU PUESTO_IMP_PCT,
VAR_PRESUPUESTO_CANT,VAR_PRESUPUEST O_CANT_PCT);
UPDATE VENTAS_CLIENTE_REPRE_BACKUP
SET NOMMES
=InformarNombreMes
(MESTRA
); /* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ */
CLOSE CUR_VENTAS_CLIENTE_REPRE;
RETURN T_ANYTRA;
DELIMITER ;