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 :

Explication de texte curseur/procédures


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Par défaut Explication de texte curseur/procédures
    Bonjour,

    Je suis débutant, j'ai du mal à comprendre ce que fait la procédure suivante :
    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
    //Ici on génére ou remplace la procédure "etl_VEN".
     
    CREATE OR REPLACE PROCEDURE etl_VEN
    IS
    //Ici on définit le curseur et son tri ?=> Qu'implique l'ordre dans lequel on écrit les champ ?
    CURSOR CUR__VEN IS SELECT CODESOCIETE, CODE_CIAL, CODE_DESCR FROM LST_CIAL;
     
    //Ici on définit des variables de type texte avec des longueurs spécifiques
      CC varchar(10);
      SC varchar(8);
      CD varchar(30);
     
    BEGIN
    //Ici on indique que l'on va passer par chaque ligne de la table dans l'ordre du curseur
    FOR enr__VEN IN CUR__VEN
    LOOP
     
    //Ici on stocke la valeur des champs dans les variables
      CC := enr__VEN.CODESOCIETE;
      SC := enr__VEN.CODE_CIAL;
      CD := enr__VEN.CODE_DESCR;
     
    //Ici on met à jour la table _VEN avec le résultat du curseur.
    INSERT INTO _VEN (champ1,champ2,champ3) values (SC,CC,CD);
     
    END LOOP;
     
    END;
    mes commentaires sont ils justes, quel est l'intéret de passer par cette procédure plutot que par un CREATE AS sachant que ma BDD ou par un export/import sachant qu'hormis une contrainte primaire sur la table source il n'y a rien de différent.
    Les procédures sont elles plus fiables ?

  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
    Ce n'est pas "create as ..." mais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Insert Into _VEN
    Select CODESOCIETE, CODE_CIAL, CODE_DESCR 
     FROM LST_CIAL;

  3. #3
    Membre averti
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Par défaut
    Merci pour cette précision. SI j'ajoute l'élément suivant avant l'insert

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select CODE_CIAL into SC
      from LST_CIAL
     where CODESOCIETE = CC
       and CODE_DESCR = CD;
    Cela signifie t'il que si mon select récupère plusieurs enregistrements, je les stockent tous dans SC et les ajoute ensuite un par un avec les valeurs de CC et CD courantes ? Au final j'obtiens donc plus de lignes dans ma table de destination est ce ça ?

  4. #4
    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
    Au départ vous avez correctement analysé votre code : il va lire les informations contenu dans la table LST_CIAL et pour chaque enregistrement trouvé dans cette table il va insérer un enregistrement dans la table _VEN.
    C’est un traitement est procédurier (ligne par ligne) et non pas ensembliste (voir mon exemple) mais, il fonctionne.
    Si vous ajoutez le code en question ça ne va pas changer grand chose. En fait vous allez relire CODE_SIAL sans que ça serve à quelque chose.

Discussions similaires

  1. Taille curseur procédure stockée
    Par anas.eh dans le forum PL/SQL
    Réponses: 5
    Dernier message: 09/09/2008, 21h44
  2. Explication de texte ou de code
    Par jodan33 dans le forum Débuter
    Réponses: 3
    Dernier message: 17/03/2008, 13h35
  3. Réponses: 0
    Dernier message: 11/02/2008, 11h37
  4. Tags : explication de texte
    Par Auteur dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 02/12/2005, 10h07

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