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 :

Problème de compréhension d'une procédure


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 10
    Points : 13
    Points
    13
    Par défaut Problème de compréhension d'une procédure
    Bonjour

    Voici une procédure pl/sql qui me pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create or replace
    PROCEDURE GENERER_OCC_VOL (NBOCC IN NUMBER) AS  
     cpt number;
     cursor liste_vols is
         select volnum from vol;
    begin
      for rec_vol in liste_vols loop
        for cpt in 1..nbocc loop
            insert into occurence_vol (occnum, occdate, occetat, volnum)        values (seq_occnum.nextval, sysdate+cpt, 'ouvert à la résa',                rec_vol.volnum);
        end loop;
      end loop;
    end;
    nb : "seq_occnum" fait référence à une séquence classique d'incrémentation

    Pour commencer , je ne comprends pas " le rec_vol ", par déduction j'imagine que REC n'est pas une fonction pl/sql car sa syntaxe aurait été :rec_vol .

    Du coup, j'ai cherche du coté des constantes ou autre déclaré, rien ne correspond a ceci dans mon SGBD. Auriez vous une idée ?

    Autre truc qui m'intrigue : " for cpt in 1..nbocc " . Pourquoi il y a t-il deux " .. ", que cela signifie-t-il ?

    Un grand merci pour avoir pris le temps de lire ce post,
    bonne journée

  2. #2
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Pl/SQL fait beaucoup d’efforts pour minimiser le travail du programmeur et la construction for implicite en fait partie.
    Implique que le compilateur derrière la scène :
    • Va déclarer un record rec de type cursor%rowtype
    • Va ouvrir ce curseur
    • Va faire le fetch par lot en utilisant un tableau de 100 enregistrements
    • Va tester qu’il y a des enregistrements encore à traiter et selon le cas va sortir de la boucle
    • Va fermer le curseur

  3. #3
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Salut,

    Déjà pour commencer tu peux regarder les différentes syntaxes des boucles en PL/SQL : http://sheikyerbouti.developpez.com/...=Chap1#L1.2.14

    Les ".." font simplement partie de la syntaxe, ce qui veut dire que tu boucles de ta borne début jusqu'à ta borne fin comme indiqué dans le tutoriel.

    Ensuite tu comprendras que rec_vol est une variable de type RECORD (c'est une ligne retournée par ton curseur, et tu peux accéder à tous les champs sélectionnées dans le curseur par exemple rec_vol.volnum dans ce cas)

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Merci , je vais regarder ceci dés ce soir.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/12/2006, 12h58
  2. Problème de compréhension d'une classe
    Par goldorax113 dans le forum Langage
    Réponses: 5
    Dernier message: 25/10/2006, 22h50
  3. Réponses: 1
    Dernier message: 20/07/2006, 17h03
  4. Réponses: 4
    Dernier message: 16/12/2005, 16h25
  5. Problème Alter view dans une procédure stockée
    Par adjava dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2005, 17h45

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