Bonjour

Lors de l'exécution d'une procédure stockée j'obtiens l'erreur :

No data - zero rows fetched, selected, or processed (Error 1329)
J'ai compris que c'est parce qu'il n'y a plus d'enregistrement à récupérer, mais comment éviter l'erreur ?

La procédure en question.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ;
Le but est le suivant : j'ai dans une table (catalog) une liste d'étoiles et je souhaite enregistrer dans la table paire toutes les paires possible.

Actuellement l'erreur se produit dans la deuxième boucle.