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 :

[PL/Pgsql] Erreur de LOOP


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut [PL/Pgsql] Erreur de LOOP
    Bonjour,
    j'ai les boucles imbriquées suivantes :
    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
    	j := 1;
     
    	FOR tab IN SELECT unnest(tableau) LOOP
    		--La première ligne du tableau contient les noms des colonnes, on passe aux suivantes
    		IF j = 1 THEN
    			j := j+1;
    			CONTINUE; 
    		END IF;
     
    		i := 1;
     
    		FOR elem IN SELECT unnest(tab) LOOP
    			--La première colonne du tableau contient les noms des lignes, on passe aux suivantes
    			IF i = 1 THEN
    				i := i+1;
    				CONTINUE; 
    			ELSE IF elem IS NOT NULL THEN
    				trouve := 1;
    			END IF;
     
    			--Si la ligne contient au moins une case non nulle, elle est gardée et on passe à la ligne suivante
    			IF trouve = 1 THEN
    				RETURN NEXT tab;
    				EXIT;
    			END IF;
     
    		END LOOP;
     
    	END LOOP;
    avec i, j et trouve des entiers, tableau un tableau à 2 dimensions de varchar, tab un record et elem un varchar.

    Je veux récupérer toutes les lignes de tableau qui ont au moins un élément non nul : éliminer toutes les lignes nulles.
    A noter que les premières ligne et colonne du tableau contiennent des titres. C'est un tableau croisé.

    Lorsque j'exécute, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ERREUR:  erreur de syntaxe sur ou près de « LOOP »
    LINE 113:   END LOOP;
                    ^
     
    ********** Erreur **********
     
    ERREUR: erreur de syntaxe sur ou près de « LOOP »
    État SQL :42601
    Caractère : 2018

  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
    Remplacer ELSE IF par ELSIF sinon il semble que les IF/END IF ne soient pas équilibrés.

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut
    Merci beaucoup. Il n'y a plus de message d'erreur.

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut
    Par contre, lorsque j'appelle la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ma_fonction()
    J'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ERREUR:  une liste de définition de colonnes est requise pour les fonctions renvoyant
    un « record »
    J'ai essayé de suivre le conseil donné dans cette discussion http://www.developpez.net/forums/d89...sultat-select/ en remplaçant record par text dans le retour de la fonction Mais j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERREUR:  indice du tableau en dehors de l'échelle
    Dans ma fonction j'utilise un tableau de 2 dimensions déclaré comme suit que je remplie sans initialisation parce que je ne connaît pas le nombre de lignes ni de colonnes dont j'aurai besoin => cela dépond du résultat d'une requête SELECT.

Discussions similaires

  1. problème pl/pgSQL - Erreur lors de l'exécution (long)
    Par alaindominique dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/11/2007, 10h08
  2. Erreur dans "Loop Until"
    Par djudju2000 dans le forum VBA Access
    Réponses: 12
    Dernier message: 14/03/2007, 12h01
  3. [Pl/pgSQL] Erreur sur l'execution d'une fonction.
    Par Floréal dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 25/09/2005, 00h48
  4. Erreur "For loop variable simple local varaible"
    Par Yepazix dans le forum Langage
    Réponses: 13
    Dernier message: 17/09/2005, 22h09
  5. Pgsql : erreur de connexion 'too many clients ...'
    Par petitmoosse dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/08/2003, 14h03

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