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 :

ERREUR: entrée manquante de la clause FROM pour la table « registre » Where: fonction PL/pgsql migrationremi


Sujet :

Requêtes PostgreSQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 172
    Points : 0
    Points
    0
    Par défaut ERREUR: entrée manquante de la clause FROM pour la table « registre » Where: fonction PL/pgsql migrationremi
    Salut,

    J'ai une erreur lors de l’exécution de la fonction ERREUR: entrée manquante de la clause FROM pour la table « registre »
    Where: fonction PL/pgsql migrationremiseaplatdesexercices(), ligne 30 à IF

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    CREATE OR REPLACE FUNCTION gtc.migrationRemiseAPlatDesExercices()
      RETURNS void
      LANGUAGE plpgsql
    AS
    $body$
    DECLARE
                  NOMBRE_MOIS_TENUE_ASS_GEN integer;
                  D_CONSO_CHAR varchar(10) =null;
                  D_SOCIAUX_CHAR varchar(10)= null;
                  D_SOCIAUX date = null;
                  D_CONSO date = null ;
                  D_DEBUT date = null;
                  D_FIN date = null;
                  TOP_SOCIAUX boolean = null;
                  DELAI_DEPOSE integer = null;
                  TOP_PP boolean =null;
                  TOP_CONSO  boolean =null;
                   -- récupérer DELAI_AG  depuis la table p_parametre
                  DELAI_AG CURSOR FOR select valeur from  p_parametre where code_domaine='BIL' and code_sous_domaine='RELANCE' and cle='DELAI_TENUE_AG' and chrono=0;
                  DELAI integer =2;
                    -- declaration d’un cursor pour la selection des registres
                  registre CURSOR FOR SELECT * FROM gtc.r_registre;
                  resultatRegistre RECORD; -- Le resultat de la selection des registres
                  id_registre integer;
                  --D_SOCIAUX CURSOR FOR SELECT cloture FROM r_societe WHERE identifiant_registre=registre.identifiant;
                    BEGIN
     
                                   OPEN registre; -- ouvrir le cursor
                                  LOOP
                                      FETCH registre INTO resultatRegistre; -- fetch une ligne de registre dans un record
                                             EXIT WHEN NOT FOUND; -- Plus rien a lire alors quitter la boucle
                                        id_registre := resultatRegistre.identifiant;
                                -- si statut = A, I, ACP  : on enchaine sur "Traitement dossier PP"
                                   IF(registre.code_statut == 'A' || registre.code_statut =='I' || registre.code_statut=='ACP') THEN
                                    RAISE NOTICE ' TRAITEMENT PERSONNE PHYSIQUE';
                                 -- sinon si statut = B, C, D : on enchaine sur "Traitement dossier PM" 
                                  ELSEIF (registre.code_statut =='B' || registre.code_statut=='C' || registre.code_statut=='D') THEN
                                   RAISE NOTICE ' TRAITEMENT PERSONNE MORALE';
                                   TOP_PP = false;
     
                                                IF ( EXISTS (SELECT * FROM r_personne_morale , r_societe WHERE r_personne_morale.identifiant  = r_societe.identifiant_personne_morale AND identifiant_registre=registre.identifiant AND code_forme_juridique in(select code from t_forme_juridique where indic_obligation_depot=true))) THEN
                                                     TOP_SOCIAUX = true; 
                                                 ELSEIF( EXISTS (SELECT * FROM r_relance_parametre , r_societe WHERE r_relance_parametre.identifiant  = r_societe.identifiant_relance_parametre AND identifiant_registre=registre.identifiant AND indic_obligation_depot = true)) THEN
                                                      TOP_SOCIAUX = true; 
                                                   ELSEIF( EXISTS (SELECT * FROM r_relance_parametre , r_societe WHERE r_relance_parametre.identifiant  = r_societe.identifiant_relance_parametre AND identifiant_registre=registre.identifiant AND indic_depot_consolide  = true)) THEN
                                                      TOP_CONSO = true; 
                                                  END IF;
     
     
                                           IF(TOP_SOCIAUX  == false) THEN
                                             IF ( EXISTS (SELECT * FROM r_exercice WHERE identifiant_registre= registre.identifiant AND code_type_comptes ='S')) THEN
                                                 TOP_SOCIAUX = true; 
                                             END IF;   
     
                                        IF(TOP_CONSO  == false) THEN
                                             IF (EXISTS (SELECT * FROM r_exercice WHERE identifiant_registre= registre.identifiant AND code_type_comptes ='C')) THEN
                                                TOP_CONSO = true;
                                             END IF;
     
     
                                /*
                                     D_SOCIAUX =SELECT cloture FROM r_societe WHERE identifiant_registre=registre.identifiant;
                                     D_CONSO= SELECT cloture FROM r_societe WHERE identifiant_registre=registre.identifiant;
                                     D_FIN = SELECT date_radiation FROM  r_registre WHERE identifiant_registre=registre.identifiant;
                                */
                                   IF(D_SOCIAUX ==null) THEN
                                       IF(EXISTS(SELECT * FROM r_exercice,r_registre WHERE r_exercice.identifiant =r_registre.identifiant AND code_type_comptes='S' AND r_exercice.date_cloture IS NOT NULL AND  r_exercice.date_cloture =(SELECT MAX(date_cloture) FROM r_exercice,r_registre WHERE r_exercice.identifiant =r_registre.identifiant AND code_type_comptes='S')))THEN
                                            D_SOCIAUX_CHAR =  to_char(D_SOCIAUX,'dd/YYYY');
                                      END IF;
                                        END IF;
                        -- Si  TOP_CONSO = vrai et D_CONSO est nulle                       
                                IF(TOP_CONSO == true AND D_CONSO == null) THEN
                                             IF(EXISTS(SELECT * FROM r_exercice,r_registre WHERE r_exercice.identifiant =r_registre.identifiant AND code_type_comptes='C' AND r_exercice.date_cloture IS NOT NULL AND  r_exercice.date_cloture =(SELECT MAX(date_cloture) FROM r_exercice,r_registre WHERE r_exercice.identifiant =r_registre.identifiant AND code_type_comptes='S')))THEN
                                                D_CONSO_CHAR =  to_char(D_CONSO,'dd/YYYY');
                                            ELSE
                                              D_CONSO_CHAR  = D_SOCIAUX_CHAR;
                                      END IF;
                                        END IF;     
     
     
                              NOMBRE_MOIS_TENUE_ASS_GEN = (SELECT nombre_mois_tenue_assemblee_generale FROM r_relance_parametre,r_societe WHERE r_relance_parametre.identifiant=r_societe.identifiant_relance_parametre AND r_societe.identifiant_registre=registre.identifiant AND nombre_mois_tenue_assemblee_generale IS NOT NULL AND nombre_mois_tenue_assemblee_generale!=0);
     
                            IF(NOMBRE_MOIS_TENUE_ASS_GEN != NULL AND NOMBRE_MOIS_TENUE_ASS_GEN !=0 ) THEN
                                      DELAI = DELAI + NOMBRE_MOIS_TENUE_ASS_GEN;
                              ELSE
                                       DELAI  = DELAI  + DELAI_AG ;
                             END IF; 
     
                             IF(TOP_SOCIAUX == true AND D_SOCIAUX  !=NULL ) THEN
                                 -- on enchaine sur "Traitement série exercice" pour SOCIAUX
                             ELSEIF(TOP_CONSO == true AND D_CONSO  != NULL) THEN
                                --on enchaine sur "Traitement série exercice" pour CONSO
                             END IF;
     
                                     END IF;
                                  END IF ;
                                   END IF ;
                                  END LOOP; --fin boucle externe
                                   CLOSE registre; -- fermer le cursor
                                   RETURN;
                    END;
    $body$
     VOLATILE
     COST 100;
    COMMIT;
    Merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(registre.code_statut == 'A' || registre.code_statut =='I' || registre.code_statut=='ACP') THEN
    Ne serait-ce pas plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(resultatRegistre.code_statut == 'A' || resultatRegistre.code_statut =='I' || resultatRegistre.code_statut=='ACP') THEN

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    Non j'ai essayé ça.

    Mais le soucis viens effectivement au niveau de cette ligne.

    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(registre.code_statut == 'A' || registre.code_statut =='I' || registre.code_statut=='ACP') THEN
    Ne serait-ce pas plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(resultatRegistre.code_statut == 'A' || resultatRegistre.code_statut =='I' || resultatRegistre.code_statut=='ACP') THEN

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    J'ai résolu le soucis.

    J'ai remplacé || par OR + registre par resultatRegistre , merci aieeeuuuuu


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     IF (resultatRegistre.code_statut = 'A' or resultatRegistre.code_statut = 'I' or resultatRegistre.code_statut = 'ACP') THEN

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

Discussions similaires

  1. [9.2] Entrée manquante de la clause FROM pour la table « curs1 »
    Par mapmip dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/07/2014, 12h27
  2. Réponses: 5
    Dernier message: 10/07/2007, 12h24
  3. [Access] "Erreur de syntaxe dans la clause FROM"
    Par Marie_2116 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 05/07/2007, 15h51
  4. Erreur de syntaxe dans la clause from
    Par shub dans le forum Access
    Réponses: 1
    Dernier message: 12/06/2006, 20h24
  5. Réponses: 2
    Dernier message: 03/06/2006, 00h22

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