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 :

aux experts le fonctionnement de cette procedure


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 31
    Points : 16
    Points
    16
    Par défaut aux experts le fonctionnement de cette procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    DECLARE
    n NUMBER := 10;
    PROCEDURE etudeNocopy
    (n1 IN NUMBER, n2 IN OUT NUMBER, n3 IN OUT NOCOPY NUMBER) IS
    BEGIN
    n2 := 20;
    DBMS_OUTPUT.PUT_LINE(n1);
    n3 := 30;
    DBMS_OUTPUT.PUT_LINE(n1);
    END etudeNocpy;
    BEGIN
    etudeNocopy(n, n, n);
    DBMS_OUTPUT.PUT_LINE(n);
    END;
    voila le resultat obtenu:
    10
    30
    20
    jai pas compris comment il fonctionne cette procedure pr donner ce resultat

  2. #2
    Invité
    Invité(e)
    Par défaut
    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
    DECLARE
      n NUMBER := 10;
    PROCEDURE etudeNocopy
      (
        n1 IN NUMBER,
        n2 IN OUT NUMBER,
        n3 IN OUT NOCOPY NUMBER )
           IS
    BEGIN
      n2 := 20;
      DBMS_OUTPUT.PUT_LINE( n1 );
      n3 := 30;
      DBMS_OUTPUT.PUT_LINE( n1 );
    END etudeNocopy;
    BEGIN
      etudeNocopy( n, n, n );
      DBMS_OUTPUT.PUT_LINE( n );
    END;
    /
    amusant...
    J'imagine qu'il y a des choses à voir avec le passage par pointeur, mais je laisse les experts expliquer plus en avant...

  3. #3
    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
    Je me rappelle d'avoir déjà discuté de ça ici

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    ce serait pas mal que quand quelqu'un demande qu'on lui fasse ses devoirs, qu'il prenne au moins le temps d'un minimum de recherche

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Je connaissais pas comme truc..
    Je vois pas trop l'intérêt de la chose, vu la complexité lors des debug suivants..

    lbrnoss, Pour mieux comprendre, faut toujours mettre des traces supplémentaires.
    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
    DECLARE
    	n NUMBER := 10;
    	PROCEDURE etudeNocopy
    	(n1 IN NUMBER, n2 IN OUT NUMBER, n3 IN OUT NOCOPY NUMBER) IS
    	BEGIN
    		n2 := 20;
    		DBMS_OUTPUT.PUT_LINE(n1 ||' '|| n2 ||' '|| n3);
    		n3 := 30;
    		DBMS_OUTPUT.PUT_LINE(n1 ||' '|| n2 ||' '|| n3);
    	END etudeNocopy;
    BEGIN
    	etudeNocopy(n, n, n);
    	DBMS_OUTPUT.PUT_LINE(n);
    END;
     
    10 20 10
    30 20 30
    20
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par McM Voir le message
    Je connaissais pas comme truc..
    Je vois pas trop l'intérêt de la chose, vu la complexité lors des debug suivants..
    Pas beaucoup d'interet , sauf que il veut juste qu'on fasse ses devoirs a sa place ...
    car meme en faisant une recherche il aurait deja trouvé sur ce meme site alors...

    Belle mentalité ces futurs informaticiens

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Je ne connaissais pas. J'ai lu le lien.
    Deux choses m'échappent.
    - A aucun moment un lien n'est fait entre n1 et n3.
    - n1 étant un IN, il n'est pas censé pouvoir être modifié. Que n3 change de valeur avec NOCOPY, je comprends, mais n1, je ne vois pas...

  8. #8
    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
    Citation Envoyé par GoLDoZ Voir le message
    ...
    Deux choses m'échappent.
    - A aucun moment un lien n'est fait entre n1 et n3.
    - n1 étant un IN, il n'est pas censé pouvoir être modifié. Que n3 change de valeur avec NOCOPY, je comprends, mais n1, je ne vois pas...
    Relisez tranquillement le lien. Vous allez comprendre:
    • Comment le lien est fait
    • Comment n1 change successivement de valeur

    Finalement la leçon est simple: faite attention avec NOCOPY.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/02/2006, 11h06
  2. Réponses: 4
    Dernier message: 04/03/2005, 10h42
  3. Avis aux experts : accéder aux dimensions d'un tableau.
    Par poulpi dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/11/2004, 09h09
  4. avis aux experts-Quels sont les logiciels les plus adaptés??
    Par chouchouappc dans le forum Décisions SGBD
    Réponses: 46
    Dernier message: 20/07/2004, 21h26

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