Bonjour à tous,
Finalement, j'ai réussi a trouver la solution, j'ai créé deux procédures

voici les codes
la fonction split
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
CREATE DEFINER=`civa`@`localhost` PROCEDURE `FNC_SPLIT`(sabots VARCHAR(600), comp_probes VARCHAR(600))
    MODIFIES SQL DATA
BEGIN
 
 
DECLARE ret VARCHAR(600);
DECLARE counter int;
DECLARE n int;
 
SET counter = 0;
SET n = LENGTH(comp_probes) - LENGTH(REPLACE(comp_probes, '/', '')) + 1;
 
WHILE (counter < n) DO
  -- increase the counter
 	SET counter = counter  + 1 ;
  -- extract the result substring before the delimiter found
 	SET ret = SUBSTRING_INDEX(comp_probes, '/', 1);
  -- set mainstring right part after the delimiter found
	SET comp_probes = SUBSTRING_INDEX(comp_probes, '/', -(n - counter));
  -- add the result substring to the table
 	INSERT INTO base.table_split (sabots, comp_probes) VALUES (sabots, ret);
END WHILE; 
 
END;
procédure pour appeler la fonction split

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
CREATE DEFINER=`civa`@`localhost` PROCEDURE `split_probes`()
BEGIN
 
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE comp_prob VARCHAR(600);
DECLARE mod_num VARCHAR(600);
DECLARE curComp CURSOR FOR SELECT Compatible_probes FROM sabot_olympus;
DECLARE curModel CURSOR FOR SELECT Model_number FROM sabot_olympus;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;
 
OPEN curComp;
OPEN curModel;
 
boucle: LOOP
	FETCH curComp INTO comp_prob;
	FETCH curModel INTO mod_num;
    IF done THEN
		LEAVE boucle;
    END IF;
    CALL FNC_SPLIT(mod_num ,comp_prob);
END LOOP boucle;
 
CLOSE curComp;
CLOSE curModel;
 
 
END;
et la table qui va contenir les liens entre les modèles puis faire les insertions dans la table concernée.

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
Create TABLE IF NOT EXISTS base.table_split(
 base.table_split.id int NOT NULL AUTO_INCREMENT,
 base.table_split.sabots VARCHAR(500) NULL DEFAULT NULL,
 base.table_split.comp_probes VARCHAR(500) NULL DEFAULT NULL, 
 
PRIMARY KEY (id))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
 
call split_probes();
 
insert into base.liens_models
 ( type_lien,id_model1, id_model2)
 
 SELECT
 (select concat('sabot','-', nature) from base.nature where id_nature= 2 ) as type_lien,
 m1.id_model as id_model1,
 m2.id_model as id_model2
FROM
	base.table_split as s,
    base.model as m1,
    base.model as m2
WHERE
	s.sabots = m1.model_number
    AND s.comp_probes = m2.model_number;
Ce que j'ai fait pour que ça marche, j'ai stocké les deux procédures dans le dump , puisque j'initialise ma base à partir d'un dump sous eclipse
j'ai testé ça marche trés bien
Maintenant, ma question, comment faire pour regrouper les deux procédures dans ma transaction Sql qui contient 500 lignes.

J'ai trouvé pas mal de choses sur tsql, java et PHP mais en Sql je trouve rien.
M'aidez m'aidez S'il vous plait