Bonjour,

Je voudrais savoir s'il y a un moyen simple de simuler une liste (tableau, array) comme argument d'une fonction ou d'une procédure, dans l'idée de ne faire qu'une seule fonction/procédure pour répondre à mes besoins, et côté serveur SQL pour soulager l'applicatif...

Un petit exemple que je reprends d'un récent sujet que j'ai lançé :
Soient 3 tables :
element_name (id int, name varchar)
single (id int, name varchar)
assemblage (id int, element_name_id int, single_id int) avec element_name_id et single_id des clés étrangères sur les id respectivement des tables element_name et single.

Exemple d'element_name : skateboard, voiture, moto, velo
Exemple de single : guidon, volant, roue, frein, porte

Je vais avoir comme "assemblage"s :
skateboard/roue
velo/roue
velo/frein
velo/guidon
moto/roue
moto/frein
moto/guidon
voiture/roue
voiture/frein
voiture/volant
voiture/porte

Je voudrais ajouter de nouveaux assemblages avec des elements deja existant.
J'aimerais une procedure que j'appelerais de cette manière :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
call create_assemblage('bus','roue','frein','volant','porte')
call create_assemblage('roller','roue','frein')
le premier argument serait l'element a creer et les autres sont les single à inserer dans assemblage avec ce nouvel element.

Du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# inserer le nouvel element
insert into element_name (name) values ('bus')
# recuperer son id
select id from element_name where name='bus'
 
# premier couple de l'assemblage
select id2 from single where name='roue' ;
insert into assemblage (element_name_id, single_id) values (id, id2)
 
# second couple de l'assemblage
select id2 from single where name='frein' ;
insert into assemblage (element_name_id, single_id) values (id, id2)
 
etc...
et ceci dans une boucle pour le faire autant de fois que d'éléments en argument...
ou bien, imaginer de concatener les elements dans le deuxième argument mais il faut trouver un moyen d'itérer sur ces arguments dans la fonction/procedure :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
call create_assemblage('bus','roue,frein,volant,porte')
call create_assemblage('roller','roue,frein')
Merci pour vos avis !