1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
   |  
DELIMITER $$
 
DROP PROCEDURE IF EXISTS `hipparcos`.`SET_STARS_PAIRS` $$
CREATE PROCEDURE `STARS_PAIRS`()
BEGIN
 
  DECLARE var_id_hip1 VARCHAR(10);
  DECLARE var_id_hip2 VARCHAR(10);
  DECLARE var_dot_prod FLOAT;
  DECLARE var_mag_1 FLOAT;
  DECLARE var_mag_2 FLOAT;
  DECLARE var_ra_1 FLOAT;
  DECLARE var_dec_1 FLOAT;
  DECLARE var_ra_2 FLOAT;
  DECLARE var_dec_2 FLOAT;
  DECLARE var_num1 INTEGER;
  DECLARE var_num2 INTEGER;
 
  DECLARE curseur1 CURSOR FOR SELECT `id`, `ra_d`, `dec_d`, `mag`, `num` FROM catalog WHERE mag < 0 ORDER BY num;
  DECLARE curseur2 CURSOR FOR SELECT `id`, `ra_d`, `dec_d`, `mag`, `num` FROM catalog WHERE mag < 0 and num > var_num1 ORDER BY num;
 
 
  OPEN curseur1;
 
  LOOP
    FETCH curseur1 INTO var_id_hip1, var_ra_1, var_dec_1, var_mag_1, var_num1;
 
    OPEN curseur2;
 
    LOOP
      FETCH curseur2 INTO var_id_hip2, var_ra_2, var_dec_2, var_mag_2, var_num2;
 
      SET var_dot_prod = var_ra_1*var_dec_1 + var_ra_2*var_dec_2;
 
      INSERT INTO paires (`id_hip1`, `id_hip2`, `dot_prod`, `mag_1`, `mag_2`, `ra_1`, `dec_1`, `ra_2`, `dec_2`, `num_1`, `num_2`)
      VALUES (var_id_hip1, var_id_hip2, var_dot_prod, var_mag_1, var_mag_2, var_ra_1, var_dec_1, var_ra_2, var_dec_2, var_num1, var_num2);
 
    END LOOP;
 
    CLOSE curseur2;
 
  END LOOP;
 
  CLOSE curseur1;
 
END $$
 
DELIMITER ; | 
Partager