Bonjour,

je cherche à développer une fonction d'insertion de données dans une table commande et une table relationnelle.
En effet, je possède une table commande, une table article et une table relationnelle qui affecte les articles à une commande.

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
table t_produit (
   prod_Id integer primary key,
   prod_Libelle varchar(32)
);
 
table t_commande (
   cmd_Id integer auto_increment primary key,
   cmd_Date date
);
 
table r_prod_cmd (
   Id integer primary key,
   cmd_Id integer,
   prod_Id integer,
   qute integer,
   remise integer
);
L'utilisateur saisit dans un formulaire développé en php, une nouvelle commande. Il affecte à cette commande une liste d'articles.
Comme conseillé par SQLPro, je cherche à développer une fonction permettant l'insertion d'une nouvelle commande dans la table commande et l'insertion des articles rattachés à cette commande dans la table relationnelle.

Voici le corps de ma fonction:

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 or REPLACE FUNCTION InsNewCommande(anyarray,anyarray,anyarray) RETURNS INTEGER AS '
DECLARE
	idCmd integer; -- Id de la commande
	currentTime timestamp;
	prodId ALIAS FOR $1; -- Liste des codes Produits
	prodQuantite ALIAS FOR $2; -- Liste des quantités
	prodRemise ALIAS FOR $3; -- Liste des remises
 
BEGIN
	-- Génération dun nouvel Id de commande
	select into idCmd nextval(''cmd_id_seq'');
 
	-- Date dEnregistrement
	currentTime := ''now'';
 
	-- Insertion dans la table t_commande
	insert into t_commande values(idCmd,currentTime);
 
	-- Insertion dans la table relationnelle
	-- Cherche Instructions
 
	return 0;
END;
' LANGUAGE plpgsql;
Ensuite l'idée serait d'executer une boucle for d'un nombre de fois correspondant à la taille du tableau. Dans cette boucle je pourrais inserer dans la table relationnelle, les valeurs des tableaux passés en paramètres.

Comme la taille du tableau n'est pas connue à l'avance, est-il possible de récupérer la taille du tableau avec une instruction du type tableau.length ou quelque chose de similaire ?

Pensez-vous que ma façon de procéder pour insérer des données soit correctes ? Est-ce comme cela que je dois procéder ?

Merci
++