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

Requêtes PostgreSQL Discussion :

Retour de procédure stockée de même type qu'une table.


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Par défaut Retour de procédure stockée de même type qu'une table.
    Bonjour,

    J'ai une table orders :

    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
    CREATE TABLE orders
    (
      id_order serial NOT NULL,
      password text NOT NULL DEFAULT generate_password(),
      order_date timestamp with time zone NOT NULL DEFAULT now(),
      client_firstname text NOT NULL,
      client_lastname text NOT NULL,
      client_email text NOT NULL,
      last_ref_transaction integer,
      amount integer,
      status order_status NOT NULL DEFAULT 'ONGOING'::order_status, -- ONGOING, PENDING_PAYMENT, CANCELED, VALIDATED or PROCESSED
      CONSTRAINT orders_pkey PRIMARY KEY (),
      CONSTRAINT orders_last_ref_transaction_fkey FOREIGN KEY ()
          REFERENCES transactions () MATCH SIMPLE
          ON UPDATE CASCADE ON DELETE SET NULL
    )
    Pour insérer des éléments dans cette table, j'utilise une procédure stocké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
    CREATE OR REPLACE FUNCTION create_order(firstname text, lastname text, email text)
      RETURNS orders AS
    $BODY$
        DECLARE
            orderid integer;
            new_order orders%ROWTYPE;
        BEGIN
            INSERT INTO orders ("client_firstname", "client_lastname", "client_email") VALUES (firstname, lastname, email) RETURNING orders.id_order INTO orderid;
            IF NOT FOUND THEN
                RETURN NULL;
            END IF;
            SELECT * FROM orders WHERE id_order = orderid INTO new_order;
            RETURN new_order;
        END;
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    Le problème étant que lorsque depuis PHP je lance la requête "SELECT create_order("John", "Doe", "john.doe@nowhere.oups)" Il me renvoi une chaîne de caractères du type "(14,aRZn9$km3x,"2013-07-29 14:33:52.193777-02",John,Doe,john.doe@nowhere.oups,,,ONGOING)".

    Y a-t-il un moyen de modifier la procédure ou la requête qui l'appelle pour que je puisse travailler directement avec le résultat sans avoir à parser une chaîne ?

    Merci.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from create_order(...);

  3. #3
    Membre chevronné Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Par défaut
    Le pire c'est que c'est ce que j'avais écrit au départ, mais à peine la ligne écrite j'ai changé pensant justement avoir fait une erreur...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/08/2011, 10h48
  2. Procédure stockée : gestion des doublons dans une table
    Par Mothership dans le forum Administration
    Réponses: 4
    Dernier message: 22/07/2009, 11h29
  3. Procédure stockée, copie d'enregistrement d'une table vers une autre
    Par sarah65536 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 15/06/2009, 18h02
  4. Appliquer une procédure stockée sur le contenu d'une table
    Par teks9 dans le forum Développement
    Réponses: 5
    Dernier message: 09/09/2008, 13h40
  5. Procédure stockée - Retourner plusieurs ligne d'une table
    Par ronando dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/11/2005, 13h19

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