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 :

nbre d'argument différent entre l'appel d'une procédure et la procédure


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 25
    Points : 16
    Points
    16
    Par défaut nbre d'argument différent entre l'appel d'une procédure et la procédure
    Bonjour,

    je dois modifier un bout de code qui fonctionne depuis des lustres dans ma société.

    Nous sommes sous oracle 8.

    En analysant ce code, il y a quelque chose que je ne comprends pas.
    Peut être pourrez-vous m'éclairer.

    Voici la procédure appelante:

    PROCEDURE SCHRIJF_LOT_RECORD IS

    BEGIN

    FOR r_tmp IN (SELECT werknemer_id,
    soc_nr,
    loonperiode_dt,
    loon_cd,
    afdeling_cd,
    uren,
    bedrag,
    eenheid
    FROM soc_tijdelijk_lot
    ORDER BY soc_nr,
    loonperiode_dt,
    loon_cd) LOOP

    maak_lot_record (p_soc_nr => r_tmp.soc_nr,
    p_werknemer_id => r_tmp.werknemer_id,
    p_eind_dt_loonp => r_tmp.loonperiode_dt,
    p_looncode => r_tmp.loon_cd,
    p_afdeling => r_tmp.afdeling_cd,
    p_aant_uren => to_char(r_tmp.uren),
    p_bedrag => to_char(r_tmp.bedrag),
    p_eenheid => to_char(r_tmp.eenheid));


    INSERT INTO soc_doorgestuurd_lot (doorgestuurd_dt,
    werknemer_id,
    soc_nr,
    loonperiode_dt,
    loon_cd,
    bedrag,
    uren,
    eenheid)
    VALUES (trunc(SYSDATE),
    r_tmp.werknemer_id,
    r_tmp.soc_nr,
    r_tmp.loonperiode_dt,
    r_tmp.loon_cd,
    r_tmp.bedrag,
    r_tmp.uren,
    r_tmp.eenheid);

    COMMIT;

    END LOOP;

    END SCHRIJF_LOT_RECORD;


    déjà là je ne comprend pas la signification du "=>" dans l'appel de la procédure "maak_lot_record" (en bleu). De plus, l'appel de cette procédure comporte 8 arguments.


    Voici maintenant le code de cette procédure "maak_lot_record "

    PROCEDURE MAAK_LOT_RECORD (p_soc_nr VARCHAR2,
    p_werknemer_id VARCHAR2,
    p_eind_dt_loonp DATE,
    p_looncode VARCHAR2,
    p_afdeling VARCHAR2 DEFAULT rpad(' ', 12, ' '),
    p_aant_dagen VARCHAR2 DEFAULT rpad(' ', 4, ' '),
    p_aant_uren VARCHAR2 DEFAULT rpad(' ', 5, ' '),
    p_bedrag VARCHAR2 DEFAULT rpad(' ', 10, ' '),
    p_eenheid VARCHAR2 DEFAULT rpad(' ', 15, ' ')) IS

    ls_bedrag VARCHAR2(10);
    ls_aant_uren VARCHAR2(6);

    BEGIN

    h_record := 'LOT' ||
    'D' ||
    ' '||
    rpad(p_soc_nr, 20) ||
    rpad(nvl(to_char(p_eind_dt_loonp, 'DD/MM/YYYY'), ' '), 10, ' ') ||
    ' '||
    rpad(nvl(p_afdeling, ' '), 12, ' ') ||
    rpad(lpad(nvl(p_looncode,rpad(' ', 6, ' ')), 4, '0'), 6, ' ') || -- Code Salaire
    lpad(nvl(p_aant_dagen,rpad(' ', 4, ' ')), 4, '0') ||
    lpad(nvl(p_aant_uren, ' '), 5, ' ') ||
    lpad(nvl(p_eenheid, ' '), 15, ' ') ||
    ' '||
    lpad(nvl(p_bedrag, ' '), 11, ' ') ||
    ' 4';

    utl_file.put_line (output_file, h_record);

    gln_aantal_lijnen := gln_aantal_lijnen + 1;

    END MAAK_LOT_RECORD;


    Vous contaterez qu'elle comporte 9 arguments !!

    Le nombre d'arguments ne devrait il pas être identique??
    A quoi sert le "=>" dans la procédure appelante??

    Merci de vos réponses

  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
    Une procédure peut avoir des paramètres qui prennent des valeurs par défaut.
    [Edit]
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ...
    p_afdeling VARCHAR2 DEFAULT rpad(' ', 12, ' '),
    Le => sert à passer les paramètres dans la procédure par nom et non pas par position.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup pour ces précisions, je comprends mieux maintenant.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/12/2013, 15h31
  2. Réponses: 0
    Dernier message: 15/02/2010, 11h40
  3. Comportement différent entre un bouton et une image
    Par MicheMTP13 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 07/11/2005, 08h47
  4. [ASCII] Codes différents entre 2 logiciels
    Par MinsK dans le forum Assembleur
    Réponses: 3
    Dernier message: 20/04/2004, 09h34
  5. Réponses: 2
    Dernier message: 17/05/2002, 20h37

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