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

SQL Firebird Discussion :

Concatener les resultats d'une Procedure Stockée


Sujet :

SQL Firebird

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut Concatener les resultats d'une Procedure Stockée
    Bonsoir à tous

    Sois ma PS suivante :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    .....
    FOR select t_notes.LIB_MAT
    FROM t_notes
    WHERE
    Tve.cli=:mat  and
    Tve.dist='Non Validé'
    INTO :MALISTE
    DO
    BEGIN
    LISTEMAT=:LISTEMAT||'*'||:MALISTE;
    END
    suspend;
    ....

    La requête normal me donne donne sur deux lignes A60 et A80
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select Tve.LIB
    FROM t_notes
    WHERE
    Tve.cli=:mat  and
    Tve.dist='Non Validé'

    Je voudrais que la variable de Sortie LISTEMAT en sortie de ma PS contienne : A60*A80

    Apparemment cette instruction
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    LISTEMAT=:LISTEMAT||'*'||:MALISTE;
    ne marche !

    j'ai besoin d'aide. Merci à tous.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    j'ai l'impression de rater quelque chose car je ne vois pas à quoi correspond 'tve' , pour moi donc, tous les SELECT sont faux ou incomplets

    Apparemment cette instruction , ne marche pas
    j'ai pendant un moment cru que cela pouvait être du à l'utilisation de '*' mais un test rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 'A60'||'*'||'B80' from RDB$DATABASE
    me permet de dire que ce n'est pas le cas

    J'ai aussi l'impression que l'aggrégat LIST() pourrait être utilisé
    approximation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT LIST(n.LIB_MAT,'*') FROM t_notes n JOIN ... tve ON ....
    WHERE .....
    GROUP BY ? INTO :LISTEMAT
    mais comme le problème est mal posé (ddl des tables et relations entre elles , jeu d'essai) à cause d'une réduction trop importante, j'en resterai là
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select Tve.LIB
    FROM tve
    WHERE
    Tve.cli='clia54'  and
    Tve.dist='Non Validé'

    La table dans le from c'est tve. J'ai du me tromper dans la saisie de mon message. En fait je voulais juste concaténer le résultat de cette requête dans une PS.
    Le code au dessus me ramène deux lignes de résultat :
    tve.LIB : A60 et B80.

    la je viens juste de modifier le message en effet le problème vient résolu avec l'application de l'aggregat LIST (que je ne connaissais pas !).

    Code code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select LIST(t_notes.LIB_MAT,'*')
    FROM t_notes WHERE Tve.cli=:mat  and
    Tve.dist='Non Validé'
    INTO :MALISTE
    suspend;
    ....

    Merci

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut devalander.

    Citation Envoyé par Devalander
    Je voudrais que la variable de Sortie LISTEMAT en sortie de ma PS contienne : A60*A80
    D'après ce que j'ai compris de votre demande, vous auriez aimé avoir la fonction group_concat de MySql.
    Mais cette fonction existe déjà sous FireBird, sauf qu'elle se nomme "list()".
    Voici un exemple très basique du genre de résultat que vous recherchez :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    CREATE DATABASE '..\Data\Base.fdb' page_size 4096 DEFAULT CHARACTER SET ISO8859_1;
     
    -- ===========================
    -- Création de la table 'test'
    -- ===========================
     
    create table test (
    id     int      not null primary key,
    lib varchar(20) not null collate fr_fr
    );
     
    -- =====================
    -- Insertion dans 'test'
    -- =====================
     
    insert into test (id,lib) values (1, 'un');
    insert into test (id,lib) values (2, 'deux');
    insert into test (id,lib) values (3, 'trois');
     
    -- ================
    -- Vidage de 'test'
    -- ================
     
    select list(lib, ' * ') from test;
     
                 LIST
    =================
                  0:4
    ==============================================================================
    LIST:
    un * deux * trois
    ==============================================================================
     
     
    exit;
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    oui c'est bien ça ! je ne connaissait pas LIST merci a tous

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

Discussions similaires

  1. Recuperer le resultat d'une procedure stockee
    Par davidou2001 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/06/2007, 13h13
  2. [debutant]compter les resultat d'une requete
    Par christophebmx dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/02/2005, 17h11
  3. help sur le code d'une procedures stockee
    Par omlip dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/08/2004, 18h45
  4. recuperer ler resultat d une procedure stockée
    Par Nadaa dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/08/2004, 08h45
  5. [DEBUTANT] Une vue dans une procedure stockee ?
    Par Invité dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/02/2004, 11h57

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