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 :

Besoin d'aide pour fonction


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2016
    Messages : 29
    Points : 15
    Points
    15
    Par défaut Besoin d'aide pour fonction
    Bonjour,

    J'aurais besoin d'aide pour un exercice. Je dispose d'une table contenant une liste de film (titrefilm, duree, annee...) J'aimerais créer une fonction qui me retourne la liste des films (donc titrefilm) + la durée (duree). Mais malgré plusieurs tentatives je n'y arrives pas, j'utilise une boucle for mais elle me renvoi le dernier film de ma table...

    Voici ce que j'ai fais :

    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
    create function liste_duree_film() returns character varying
    AS '
    DECLARE
     
        rec RECORD;
        result VARCHAR;
     
    BEGIN
     
     
        for rec in (select duree, titrefilm
                    from film)
        loop
            result := rec.titrefilm||'' ''||rec.duree;
     
        end loop;
     
        return result;
     
     
     
    END;
    ' LANGUAGE 'plpgsql';

  2. #2
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : janvier 2013
    Messages : 325
    Points : 945
    Points
    945
    Par défaut
    Le langage pl/pgsql est overkill pour ça, en sql simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create function liste_duree_film() returns record
    as $$
    select * from film;
    $$ language sql;

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2016
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Malheureusement cela fait partie de mes contraintes d'utiliser ce langage ...

  4. #4
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : janvier 2013
    Messages : 325
    Points : 945
    Points
    945
    Par défaut
    Citation Envoyé par Nicodu10 Voir le message
    Malheureusement cela fait partie de mes contraintes d'utiliser ce langage ...
    Pour un exercice pareil c'est inadapté, mais soit.
    Tu peux retourner en pl/pgsql aussi des tables, pas besoin d'itérer à la main comme tu le fais, on évite la programmation par curseur à tout prix en base de données.
    La doc de pl/pgsql de la version 12 est là.

    Si cette doc te dépasse, que tu ne trouves rien ici, un petit tour chez les rosbeefs de stackoverflow, et hop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create or replace function liste_duree_film() returns table (titrefilm ton_type, duree ton_type) as
    $func$
    begin
      return query
      select f.titrefilm, f.duree
      from film f;
    end
    $func$
    language plpgsql;

Discussions similaires

  1. besoin d'aide pour fonction split
    Par remitbo dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/06/2009, 13h45
  2. Besoin d'aide pour fonction
    Par jbertin9 dans le forum Excel
    Réponses: 5
    Dernier message: 04/02/2009, 12h14
  3. besoin d'aide pour fonction et redirection
    Par roilion dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/09/2008, 11h29
  4. besoin d'aide pour fonction de conversion de base
    Par babou54 dans le forum Delphi
    Réponses: 12
    Dernier message: 13/01/2007, 22h06
  5. Besoin d'aide pour fonctions OpenSSL..... HELP !!!
    Par aide64 dans le forum Langage
    Réponses: 7
    Dernier message: 12/05/2006, 18h46

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