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 :

Utilisation d'une fonction recursive dans une fonction


Sujet :

PostgreSQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Logistique
    Inscrit en
    Novembre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur Logistique

    Informations forums :
    Inscription : Novembre 2017
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Utilisation d'une fonction recursive dans une fonction
    Bonjour à toutes et à tous,

    Je cherche à utiliser une fonction recursive qui fonctionne correctement lorsque je fais un simple select, mais pas quand je l'insère dans un bloc de fonction.

    La fonction est powerset trouvé sur : https://www.postgresql.org/message-i...innie.fuhr.org



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM powerset2(ARRAY['A','B','C']);
    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
     
    ...
    DECLARE
    v_test2 text[];
    tab_couple varchar[] := ARRAY['A','B','C'];
     
    BEGIN
          FOR v_test2
    	IN 
    	SELECT * FROM "powerset2"(tab_couple)
     
    	LOOP
    		RAISE NOTICE '%:TEST : %', i,v_test2[i];
    		i := i + 1;
     
    	END LOOP;
     
    END;
    Cela fonctionne très bien en SELECT standard, mais lors de l'intégration dans un bloc pgSQL cela ne fonctionne plus : je n'arrive pas à avoir l'ensemble des résultats, j'ai juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    NOTICE:  1:TEST : A
    NOTICE:  2:TEST : <NULL>
    NOTICE:  3:TEST : <NULL>
    NOTICE:  4:TEST : <NULL>
    NOTICE:  5:TEST : <NULL>
    NOTICE:  6:TEST : <NULL>
    NOTICE:  7:TEST : <NULL>
    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    "{A}"
    "{B}"
    "{A,B}"
    "{C}"
    "{A,C}"
    "{B,C}"
    "{A,B,C}"
    Je demande donc votre aide, car je suis sec sur le sujet... ! J'ai l'impression qu'il y a un problème de déclaration de variable et d'affectation... !

    Merci d'avance ...

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Le problème se trouve au niveau de la boucle loop, il faut et non ...
    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
     
    ...
    DECLARE
    v_test2 text[];
    tab_couple varchar[] := ARRAY['A','B','C'];
     
    BEGIN
          FOR v_test2
    	IN 
    	SELECT * FROM "powerset2"(tab_couple)
     
    	LOOP
    		RAISE NOTICE '%:TEST : %', i,v_test2[1];
    		i := i + 1;
     
    	END LOOP;
     
    END;
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Logistique
    Inscrit en
    Novembre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur Logistique

    Informations forums :
    Inscription : Novembre 2017
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup pour votre aide !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/05/2013, 10h27
  2. Réponses: 4
    Dernier message: 24/08/2011, 18h23
  3. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  4. erreur dans une requête sql dans une fonction php
    Par frboyer dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2009, 13h37
  5. Réponses: 10
    Dernier message: 18/04/2007, 17h17

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