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

PL/SQL Oracle Discussion :

procédure en erreur


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut procédure en erreur
    Bonjour à tous ,

    j'essaye de compiler la procédure ci-dessous sous oracle 10 et j'ai l'erreur suivante :
    " PLS-00103: Symbole "LOOP" rencontré à la place d'un des symboles
    suivants : if "
    que je n'arrive pas à corriger cette erreur, quelqu'un parmi vous peux t- il m'aider .
    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
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    CREATE OR REPLACE PROCEDURE TEMPS_ChargeTableTemps IS
    TEMPS_DATE     DATE ;
    TEMPS_FIN      DATE ;
    TEMPS_ID        NUMBER(2) ;
    TEMPS_JOUROUVRE     varchar(1) ;
    TEMPS_JOURDESEMAINE NUMBER(2) ;
    TEMPS_TRIMESTRE    NUMBER(1);
    TEMPS_ANNEE         varchar(4);
    TEMPS_MOIS         NUMBER(2);
    TEMPS_JOUR       NUMBER(2) ;
    TEMPS_FERIE         varchar(20);
     
    -- Début du Chargement
     
    BEGIN
     
    -- Initialisation du premier Jour de la semaine (1=Lundi)
     
     DATEFIRST :=1 ;
     
    -- Initialisation du format de la date (Année MOis Jour)
     
     DATEFORMAT :='dmy';
     
    -- Initialisation des Variables (Premiere valeur de l'ID, Date de début et date de fin)
     
    TEMPS_DATE := '01/01/2000';
    TEMPS_FIN := '31/12/2010';
    TEMPS_ID := 1000 ;
     
     WHILE TEMPS_DATE < TEMPS_FIN    LOOP
     
    -- Creation et Chargement des variables
     
    TEMPS_ANNEE := to_char(TEMPS_DATE,'yyyy')  ;
    TEMPS_MOIS  := to_char(TEMPS_DATE,'m') ;
    TEMPS_JOUR  := to_char(TEMPS_DATE,'dd') ;
    TEMPS_JOURDESEMAINE := to_char(TEMPS_DATE,'D');
    TEMPS_JOURANNEE := to_char(TEMPS_DATE,'DDD');
     
    -- Chargement du Week-End
     
      IF TEMPS_JOURDESEMAINE IN (6,7) THEN
         TEMPS_JOUROUVRE := 'N ';
      ELSE
         TEMPS_JOUROUVRE := 'O' ;
      END IF ;
     
    -- Chargement du Trimestre
     
    IF to_char(TEMPS_DATE,'m')  IN (6,7,8) THEN
    TEMPS_TRIMESTRE := 1 ;
    ELSE IF to_char(TEMPS_DATE,'m') IN (9,10,11) THEN
    TEMPS_TRIMESTRE := 2 ;
    ELSE IF to_char(TEMPS_DATE,'m') IN (12,1,2) THEN
    TEMPS_TRIMESTRE := 3 ;
    ELSE IF to_char(TEMPS_DATE,'m') IN (3,4,5) THEN
    TEMPS_TRIMESTRE := 4  ;
    END IF ;
     
     
    -- CHARGEMENT DES JOURS FERIES GENERIQUES 
     
       IF TEMPS_MOIS  = 1 AND TEMPS_JOUR = 1 THEN
          TEMPS_FERIE := 'Jour de An';
       ELSE IF TEMPS_MOIS = 5 AND TEMPS_JOUR = 1 THEN
          TEMPS_FERIE := 'Fête du Travail';
       ELSE IF TEMPS_MOIS = 5 AND TEMPS_JOUR = 8 THEN
          TEMPS_FERIE := 'Victoire 1945';
       ELSE IF TEMPS_MOIS = 7 AND TEMPS_JOUR = 14 THEN
          TEMPS_FERIE := 'Fête Nationale';
       ELSE IF TEMPS_MOIS = 8 AND TEMPS_JOUR = 15 THEN
          TEMPS_FERIE := 'Assomption';
       ELSE IF TEMPS_MOIS = 11 AND TEMPS_JOUR = 1 THEN 
          TEMPS_FERIE := 'Toussaint';
       ELSE IF TEMPS_MOIS = 11 AND TEMPS_JOUR = 11 THEN
          TEMPS_FERIE := 'Armistice 1918';
       ELSE IF TEMPS_MOIS = 12 AND TEMPS_JOUR = 25 THEN
          TEMPS_FERIE := 'Noël';
     
       -- CHARGEMENT DES JOURS FERIES PARTICULIERS AUX ANNEES - DATES SPECIFIQUES
     
       -- ANNEE 2000
     
      ELSE IF TEMPS_DATE = '21/04/2000' THEN
          TEMPS_FERIE := 'Lundi de Paques';
       ELSE IF TEMPS_DATE = '01/06/2000' THEN
          TEMPS_FERIE := 'Ascension';
       ELSE IF TEMPS_DATE = '06/06/2000' THEN
       TEMPS_FERIE := 'Lundi de Pentecôte';
     
       -- ANNEE 2001
     
       ELSE IF TEMPS_DATE = '16/04/2001' THEN
          TEMPS_FERIE := 'Lundi de Paques' ;
       ELSE IF TEMPS_DATE = '24/05/2001' THEN
          TEMPS_FERIE := 'Ascension';
       ELSE IF TEMPS_DATE = '04/06/2001' THEN
          TEMPS_FERIE := 'Lundi de Pentecôte';
     
       -- ANNEE 2002
       ELSE IF TEMPS_DATE = '01/04/2002' THEN
          TEMPS_FERIE := 'Lundi de Paques';
       ELSE IF TEMPS_DATE = '09/05/2002' THEN
          TEMPS_FERIE := 'Ascension';
       ELSE IF TEMPS_DATE = '20/05/2002' THEN
          TEMPS_FERIE := 'Lundi de Pentecôte';
     
       -- ANNEE 2003
     
       ELSE IF TEMPS_DATE = '21/04/2003' THEN
          TEMPS_FERIE := 'Lundi de Paques';
       ELSE IF TEMPS_DATE = '29/05/2003' THEN
          TEMPS_FERIE := 'Ascension';
       ELSE IF TEMPS_DATE = '06/06/2003' THEN
          TEMPS_FERIE := 'Lundi de Pentecôte';
     
     
    -- ANNEE 2009 
     
       ELSE IF TEMPS_DATE = '13/04/2009' THEN 
          TEMPS_FERIE := 'Lundi de Paques';
       ELSE IF TEMPS_DATE = '21/05/2009' THEN 
           TEMPS_FERIE := 'Ascension';
     
       -- ANNEE 2010
       ELSE IF TEMPS_DATE = '05/04/2010' THEN 
          TEMPS_FERIE := 'Lundi de Paques';
       ELSE IF TEMPS_DATE = '13/05/2010' THEN 
          TEMPS_FERIE := 'Ascension';
       ELSE
          TEMPS_FERIE := NULL ;
      END IF;
     
       -- Ajout des Valeurs dans la Table
     
       INSERT  into  TEMPS values 
       (TEMPS_ID,TEMPS_DATE,
          TEMPS_ANNEE,
          TEMPS_MOIS,
          TEMPS_JOUR,
          TEMPS_JOURDESEMAINE,
          TEMPS_JOURANNEE ,
          TEMPS_JOUROUVRE,
          TEMPS_TRIMESTRE,
          TEMPS_FERIE) ;
     
       TEMPS_DATE := TEMPS_DATE + 1;
       TEMPS_ID := TEMPS_ID + 1;
      END LOOP;
     
    commit;
     END ;
    /

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Bref, il y a plusieurs problèmes dans votre procédure mais pour l'instant vos soucis viennent de la construction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IF ... THEN
    ELSE IF ...
    END IF
    qui est incorrecte. La solution correcte est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IF ... THEN
    ELSIF ...
    END IF

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 316
    Par défaut
    bonjour,
    la syntaxe du ELSE IF en pl/sql est elsif

    cordialement

    Edit : zut grillé

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut Procédure en erreur
    Merci pour votre aide en effet le elsif n'etait pas écrit correctement
    à présent ma procédure est crée mais je n'ai rien dans la table que je devais charger en utilisant le insert .

Discussions similaires

  1. Procédure stockée : erreur de création
    Par jeromesteffe dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/06/2007, 17h45
  2. [procédure stockée] Erreur dans un while
    Par LE NEINDRE dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 19/06/2007, 16h46
  3. Réponses: 7
    Dernier message: 03/05/2007, 12h44
  4. Création de procédure stocké erreur
    Par ran_hery dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/02/2007, 09h39
  5. [Procédure stockée] Erreur 1305
    Par SSJ17Vegeta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 18/11/2005, 02h38

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