MySQL fetch next curseur problème

J'ai un problème de l'extraction de valeurs à partir d'une base de données MySQL curseur.

J'ai créer une table temporaire qui n'est qu'une simple copie d'une autre table (la table d'origine a un nom de variable, c'est passé comme la procédure du paramètre, et parce que MySQL ne supporte pas les variables les noms de table, je dois créer une copie ne peut pas utiliser l'original directement).

La table temporaire création va très bien, toutes les données qui sont censés être en sont là. Puis-je définir un curseur pour itérer sur ma table temporaire... mais quand j'essaie de le récupérer à partir du curseur dans une boucle while mes variables ne sont pas remplis avec les données de la "cursored" table... la plupart d'entre eux sont tout simplement NULLE, seuls les 2 derniers semblent avoir des valeurs correctes à l'intérieur.

Voici la partie de mon code:

-- variables to be filled from the cursor
DECLARE id,rain,snow,hs,clouds,rain2,cape,status,done int;
DECLARE v_v,v_u double;

-- cursor declaration
DECLARE iter CURSOR FOR (SELECT id,cape,rain,snow,hstones,clouds,raining,wind_u,wind_v FROM temp_tbl);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

-- drop the old temporary table if any
DROP TABLE IF EXISTS temp_tbl;

-- a statement to create the temporary table from a table with the specified name
-- (table_name is a parameter of the stored procedure this chunk is from)

SET @temp_table = CONCAT('CREATE TABLE temp_tbl AS SELECT * FROM ', table_name, ' WHERE 1'); 

-- prepare, execute and deallocate the statement
PREPARE ctmp FROM @temp_table;
EXECUTE ctmp;
DEALLOCATE PREPARE ctmp;

-- now the temp_table exists, open the cursor
OPEN iter;

WHILE NOT done DO

        -- fetch the values
        FETCH iter INTO id,cape,rain,snow,hs,clouds,rain2,v_u,v_v;

        -- fetch doesnt work, only v_u and v_v variables are fetched correctly, others are null

        -- ... further statements go here

END WHILE;

CLOSE iter;

Est-il un type de vérification à l'intérieur de l'instruction FETCH qui pourrait causer ce genre de problème? Les colonnes dans ma table temporaire (qui est dérivé de celui d'origine) sont juste des petits-ints ou les petits-ints, de sorte que ceux-ci devraient être parfaitement compatible avec l'ints-je utiliser dans l'instruction fetch. Ces deux derniers sont doubles, mais bizarre que seuls ces deux doubles sont récupérées. Même l'ID int colonne, qui est la clé primaire n'est pas récupérée.

Je travaille avec les dbForge Studio d'étape et de débogage mon procédures, mais qui ne devrait pas être le problème.

OriginalL'auteur NumberFour | 2010-02-25