Ver Mensaje Individual
  #12 (permalink)  
Antiguo 01/03/2011, 09:43
cgonzalezc
 
Fecha de Ingreso: marzo-2011
Mensajes: 23
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Resultado null de una select en un procedimiento almacenado

Gracias por adelantado, pero creo que quizas no me he acabado de explicar del todo.

Mi idea original es agrupar todos los registros de la tabla original por Año y Mes y sumarizar unas cantidades que tengo en la tabla.
Y luego hacer unos Updates con cantidades de años anteriores.

El cursor que he enviado es una primera prueba de lo que queria hacer.
Como no me funcionaba pues he ido simplificando la query.
Lo que supongo que al enviar toda la copia lo he liado más.

Creo que todavía no he sido capaz de explicar el problema que tengo.
Centrandonos en el caso del cursor, si la definición del mismo es como "Select *" devuelve bien los datos, pero si es como "Select ANYTRA" el resultado que me devuelve es NULL.
Si ejecuto el cursor lo que me hace es insertarme los n registros de la tabla origen en la tabla destino pero con el valor a NULL.



Vuelvo a enviar el procedimiento con el problema original, pero solo con la Select.

DELIMITER $$

DROP FUNCTION IF EXISTS `CUR` $$
CREATE DEFINER=`root`@`%` FUNCTION `CUR`() RETURNS int(4)
BEGIN
DECLARE PRUEBA INT(4) DEFAULT 999;

DECLARE done INT DEFAULT 0;
DECLARE ANYTRA INT(4);
DECLARE W_ANYTRA INT(4);
DECLARE MESTRA int(2);
DECLARE NOMMES varchar(15);
DECLARE NCUENTA varchar(30);
DECLARE NOMCLIENTE varchar(255);
DECLARE CODREPRE varchar(20);
DECLARE NOMREPRE varchar(50);
DECLARE MES_ACTUAL_IMP float(15,2);
DECLARE MES_ACTUAL_CANT float(15,2);
DECLARE IMPBRU float(11,2);
DECLARE DTOFAM float(11,2);
DECLARE DTOART float(11,2);
DECLARE DTOCAB float(11,2);
DECLARE DTOOTR float(11,2);
DECLARE PRECIO float(11,2);
DECLARE PRECOS float(11,2);
DECLARE VAR_MES_ANT_IMP float(15,2);
DECLARE VAR_MES_ANT_IMP_PCT float(10,2);
DECLARE VAR_MES_ANT_CANT float(15,2);
DECLARE VAR_MES_ANT_CANT_PCT float(10,2);
DECLARE VAR_FIN_ANY_IMP float(15,2);
DECLARE VAR_FIN_ANY_IMP_PCT float(10,2);
DECLARE VAR_FIN_ANY_CANT float(15,2);
DECLARE VAR_FIN_ANY_CANT_PCT float(10,2);
DECLARE VAR_INTERANUAL_IMP float(15,2);
DECLARE VAR_INTERANUAL_IMP_PCT float(10,2);
DECLARE VAR_INTERANUAL_CANT float(15,2);
DECLARE VAR_INTERANUAL_CANT_PCT float(10,2);
DECLARE VAR_PRESUPUESTO_IMP float(15,2);
DECLARE VAR_PRESUPUESTO_IMP_PCT float(10,2);
DECLARE VAR_PRESUPUESTO_CANT float(15,2);
DECLARE VAR_PRESUPUESTO_CANT_PCT float(10,2);



SELECT * 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,VA R_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_PRESUPUES TO_CANT_PCT from VENTAS_CLIENTE_REPRE_backup;



RETURN ANYTRA;

END $$

DELIMITER ;


En este caso me funciona bien porque he puesto "Select *", si esta select la cambio y pongo los nombres de las columnas entonces es cuando me devuelve NULL.