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 :

Procédure stockée multi-requètes ?


Sujet :

Requêtes PostgreSQL

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Par défaut Procédure stockée multi-requètes ?
    Bonjour,

    Voici plusieurs jours que je bloque sur un truc qui me parait pourtant très simple.
    Je ne trouve pas d'exemple, de tuto, ni d'aide sur cela.

    Je vous explique...

    Je voudrais faire une procédure stockée en postgresql qui renvoie deux jeux de résultats.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    --
    -- Name: testdle8(); Type: FUNCTION; Schema: public; Owner: admin
    --
     
    CREATE FUNCTION testdle8() RETURNS SETOF record
        AS $$SELECT 123 AS truc1 ;
    SELECT u_id AS truc2 FROM utilisateur ;
    SELECT 456 AS truc3 ;$$
        LANGUAGE sql;
    ALTER FUNCTION public.testdle8() OWNER TO admin;
    [/code]

    NB : Ne cherchez pas de cohérence entre les deux requètes, il n'y en a pas dans cet exemple ;-)

    Puis, dans mon code PHP, je voudrais pouvoir afficher les noms des utilisateurs puis les titres des actualités.

    Voilà, c'est aussi simple que cela.

    Lorsque je fait cela et que j'appelle ma fonction, seul le dernier jeu de résultats est accessible. Aussi bien directement sur phpPgAdmin qu'en php...

    Pour finir, mon code php :

    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
     
    <?php 
    try {
        $hostname = "localhost";
        $dbname = "db";
        $username = "login";
        $pw = "pwd";
        $pdo = new PDO ("pgsql:host=$hostname;dbname=$dbname","$username","$pw");
      } catch (PDOException $e) {
        echo "Failed to get DB handle: " . $e->getMessage() . "\n";
        exit;
      }
          $query = $pdo->prepare("select testdle8()");
          $query->execute();
     
          for($i=0; $row = $query->fetch(); $i++){
    	var_dump($row) ;
            echo $i." - ".$row[0]."<br/>";
          }
     
          unset($pdo);
          unset($query);
    ?>
    Merci pour votre aide...
    David

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    Et si vous faisiez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE FUNCTION testdle8() 
    RETURNS SETOF record
        AS $$SELECT 123 AS truc1 ;
    SELECT u_id AS truc2, 'USER' AS DATA
    FROM utilisateur
    UNION ALL
    SELECT 456, 'TITRE' ;$$
        LANGUAGE sql;
    ne serait-ce pas plus simple ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Par défaut
    Euh... bah parce que ça me semble pas vraiment très propre comme solution...

    Les requêtes ne seront bien sûr pas aussi simple et il est évident que les requètes seront "séparées" par des traitements.

    Merci tout de même pour votre réponse...

    David

Discussions similaires

  1. Procédures stockées et requêtes
    Par leukes dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2008, 17h45
  2. Réponses: 21
    Dernier message: 16/03/2008, 14h17
  3. procédures stockées ou requêtes directes
    Par JauB dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/11/2006, 12h04
  4. Réponses: 6
    Dernier message: 21/06/2005, 16h06
  5. Procédures stockées ou requêtes SQL
    Par zoubidaman dans le forum Débuter
    Réponses: 2
    Dernier message: 18/08/2004, 03h36

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