Rev 760 | Rev 816 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*Mise à jour de réferentiels NULL ou vides pour les observations orphelines (sans nom_ret_nn)2722 observations trouvées au 2013/07/19*/DROP PROCEDURE IF EXISTS getNomSci;DROP PROCEDURE IF EXISTS getNomSciCount;DROP PROCEDURE IF EXISTS getNomSciAuteur;DROP PROCEDURE IF EXISTS getNomSciAuteurCount;DROP PROCEDURE IF EXISTS cur;delimiter |-- obtient le nombre de matches sur nom_sel = nom_sciCREATE PROCEDURE getNomSciCount(IN _nom varchar(500), OUT param1 INT)BEGINSELECT sum(c) INTO param1 FROM (SELECT count(1) as c FROM tb_eflore.bdtfx_v1_01 b WHERE nom_sci = _nom UNION ALL SELECT count(1) FROM tb_eflore.bdtxa_v1_00 a WHERE nom_sci = _nom) AS req;END|-- retourne les paramètres d'une matchCREATE PROCEDURE getNomSci(IN _nom varchar(500), OUT param1 char(5), OUT param2 varchar(601), OUT param3 INT, OUT param4 INT, OUT param5 varchar(255))BEGINSELECT * INTO param1, param2, param3, param4, param5 FROM(SELECT "bdtfx", CONCAT(b.nom_sci, ' ', b.auteur), b.num_nom, b.num_taxonomique, b.famille FROM tb_eflore.bdtfx_v1_01 b WHERE nom_sci = _nomUNION ALLSELECT "bdtxa", CONCAT(a.nom_sci, ' ', a.auteur), a.num_nom, a.num_tax, a.famille FROM tb_eflore.bdtxa_v1_00 a WHERE nom_sci = _nom) AS req;END|-- obtient le nombre de matches sur nom_sel = CONCAT(nom_sci, " ", auteur)-- quasiment identique à ci-dessus, sauf que nous excluons de la recherche de bdtfx et bdtxa les nom dont le nom d'auteur est ''CREATE PROCEDURE getNomSciAuteurCount(IN _nom varchar(500), OUT param1 INT)BEGINSELECT sum(c) INTO param1 FROM (SELECT count(1) as c FROM tb_eflore.bdtfx_v1_01 b WHERE CONCAT(nom_sci, ' ', auteur) = _nom UNION ALL SELECT count(1) FROM tb_eflore.bdtxa_v1_00 a WHERE CONCAT(nom_sci, ' ', auteur) = _nom) AS req;END|-- retourne les paramètres d'une matchCREATE PROCEDURE getNomSciAuteur(IN _nom varchar(500), OUT param1 char(5), OUT param2 varchar(601), OUT param3 INT, OUT param4 INT, OUT param5 varchar(255))BEGINSELECT * INTO param1, param2, param3, param4, param5 FROM(SELECT "bdtfx", CONCAT(b.nom_sci, ' ', b.auteur), b.num_nom, b.num_taxonomique, b.famille FROM tb_eflore.bdtfx_v1_01 b WHERE CONCAT(nom_sci, ' ', auteur) = _nom AND auteur != ''UNION ALLSELECT "bdtxa", CONCAT(a.nom_sci, ' ', a.auteur), a.num_nom, a.num_tax, a.famille FROM tb_eflore.bdtxa_v1_00 a WHERE CONCAT(nom_sci, ' ', auteur) = _nom AND auteur != '') AS req;END|CREATE PROCEDURE cur()BEGINDECLARE done INT DEFAULT 0;DECLARE subst INT DEFAULT 0;DECLARE _id_observation bigint(20) DEFAULT 0;DECLARE _nom varchar(255) DEFAULT NULL;-- la requête principale de sélection des observations à mettre à jourDECLARE cur1 CURSOR FOR SELECT id_observation, nom_sel FROM cel_obs WHERE nom_referentiel IS NULL AND nom_sel != '' AND nom_sel IS NOT NULL AND nom_ret_nn IS NULL; -- 78149-- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;OPEN cur1;REPEATFETCH cur1 INTO _id_observation, _nom;CALL getNomSciCount(_nom, @a);-- SELECT _id_observation, _nom, @a;IF @a = 1 THENCALL getNomSci(_nom, @_ref, @_nom, @_num_nom, @_num_tax, @_famille);SELECT "updb: getNomSci", _id_observation, _nom, '=', @_ref, @_nom, @_num_nom, @_num_tax, @_famille;UPDATE tb_cel.cel_obs c SETc.nom_referentiel = @_ref,c.nom_ret = @_nom,c.nom_ret_nn = @_num_nom,c.nt = @_num_tax,c.famille = @_familleWHERE id_observation = _id_observation;SET subst = subst + 1;/* ELSECALL getNomSciAuteurCount(_nom, @a);IF @a = 1 THENCALL getNomSciAuteur(_nom, @_ref, @_nom, @_num_nom, @_num_tax, @_famille);SELECT "updb: getNomSciAuteur", _id_observation, _nom, '=', @_ref, @_nom, @_num_nom, @_num_tax, @_famille;UPDATE tb_cel.cel_obs c SETc.nom_referentiel = @_ref,c.nom_ret = @_nom,c.nom_ret_nn = @_num_nom,c.nt = @_num_tax,c.famille = @_familleWHERE id_observation = _id_observation;SET subst = subst + 1;END IF;*/END IF;UNTIL done END REPEAT;select subst AS 'nombre de mises à jour effectuées';CLOSE cur1;END|delimiter ;