IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Fonctions SQL - Tableau et type anyarray


Sujet :

PostgreSQL

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Par défaut Fonctions SQL - Tableau et type anyarray
    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
    ++

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Par défaut
    snif snif
    pas de réponse.

  3. #3
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Par défaut
    Bonjour

    si ne n'arrive pas à le faire via une fonction je te propose de le faire dans PHP, par contre pour éviter tout problème je te conseille de passé par une transaction et de vérifier pour chaque insertion qu'il n'y ai pas d'erreurs.

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Par défaut
    Oui effectivement, je pense que je vais me tourner vers la solution php.
    D'après la doc php, il semblerait que l'execution d'une méthode tel que pg_query est automatiquement encadré dans une transaction.

    Et sinon, tu ne vois pas comment je pourrais faire ?

    Merci
    ++

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/05/2012, 15h31
  2. Fonction tableau de type external
    Par julesu dans le forum Fortran
    Réponses: 3
    Dernier message: 16/01/2008, 17h45
  3. [Debutant]reallocation de memoire d'un tableau de type perso
    Par killerjeff dans le forum Débuter
    Réponses: 3
    Dernier message: 04/08/2004, 17h09
  4. [SQL S 2000] Type de variable ?
    Par Tankian dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/06/2004, 14h03
  5. Fonction divisant argument de type inconnu
    Par Nasky dans le forum C
    Réponses: 9
    Dernier message: 29/07/2003, 00h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo