2011-06-27 4 views
0

J'essaie de créer une procédure en MySQL qui utilise un curseur et une exécution. Je voudrais introspecter le schéma et mettre à jour toutes les tables qui ont une colonne de version, en mettant la version à 0. Je pense qu'il me manque une boucle (recherche d'aide ici), mais je reçois également une erreur avec mon SQL dynamique. Des idées?Curseur MySQL et préparer une déclaration - Qu'est-ce que c'est?

DELIMITER $$ 

CREATE PROCEDURE update_version_number(schemaName int) 

BEGIN 

    DECLARE the_table_name VARCHAR(200); 

    DECLARE version_cursor CURSOR 

    FOR 

    SELECT TABLE_NAME FROM information_schema.columns WHERE table_schema = "myschema" AND COLUMN_NAME = "version" AND TABLE_NAME <> "db_info"; 



    OPEN version_cursor; 

    FETCH version_cursor into the_table_name; 



    PREPARE run_version_update From 'UPDATE ? SET version = 0'; 

    SET @a = the_table_name; 

    EXECUTE run_version_update USING @a; 

    DEALLOCATE PREPARE run_version_update; 

    CLOSE version_cursor; 

END 

Répondre

0

Plus aucun problème. J'ai changé comment j'ai abordé le problème.

Questions connexes