PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  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  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Fonctions SQL - Tableau et type anyarray

Technique - Langages Procéduraux (PL) | Fonctions SQL - Tableau et type anyarray

Par etiennegaloup le 05/11/2005 - 23:21

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:
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.
Je cherche à développer une fonction en plpsql 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:
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
++

© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.