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 :

Variable locale à une fonction.


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Variable locale à une fonction.
    Bonjour,

    Est-il possible de définir une procédure conservant les valeurs par rapport à la procédure appelante?


    Cas d'une gestion d'erreur par procédure :

    Procédure A :

    Init paramètre d'erreur (On instancie le nom de la procédure générant des erreurs (Proc_Name = 'A')
    Appel Ecriture procédure d'erreur (Ecriture d'une erreur avec nom de procédure = 'A')
    Appel procédure B;
    Appel Ecriture procédure d'erreur (Ecriture d'une erreur avec nom de procédure = 'A')
    Fin Procédure


    Procédure B :

    Init paramètre d'erreur (On instancie le nom de la procédure générant des erreurs (Proc_Name = 'B')
    Appel Ecriture procédure d'erreur (Ecriture d'une erreur avec nom de procédure = 'B')
    Fin Procédure

    Le but étant d'initialisé les valeurs des erreurs communes et de ne passé en paramètre que les valeurs variables.

    Est-il également possible de récupérer le nom de la procédure appelante au sein de cette même procédure? Ainsi que le package dans laquelle est définie.

    Merci pour 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
    Quelle version de base Oracle ?
    Pour l'instant regarde who_called_me.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    A priori au moins la version 9i, vu que j'utilise SQL Developpeur.

    Il n'existe pas d'autre méthode moins contraignante ?

    Par cotnre j'ai une autre question également, au niveau de la gestion des erreurs, est-il possible d'effectuer une bout de code commun à toutes les erreurs.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    EXCEPTION
        WHEN E_INS_REQ_ERRROR THEN
            Err_Mess....
        WHEN OTHERS THEN
            Err_Mess....
        Pour toutes les erreurs:
            Inscrire Err_Mess;

  4. #4
    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
    C’est quoi pour vous une "méthode moins contraignante" ?

    Voilà un lien vers un article qui parle de la gestion des exceptions en PL/SQL

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Moins contraignante c'est sans avoir besoin de développer une fonction.

  6. #6
    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 MoiRemi Voir le message
    Moins contraignante c'est sans avoir besoin de développer une fonction.
    Bref, la fonction a été déjà développée.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Par sans développement, je voulais dire une variable qui contenait l'information.

    En effet cette fonction serait intégrée pour des besoins de suivi (Traçage des erreurs et message informatifs.

    Celle-ci va être donc appelé systématiquement dans chaque batch développé et d'inscrire en dur le nom du package, je ne préfère pas dégradé les performances en appelant cette fonction.

    En tout cas Merci quand même.

  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 MoiRemi Voir le message
    Par sans développement, je voulais dire une variable qui contenait l'information.

    En effet cette fonction serait intégrée pour des besoins de suivi (Traçage des erreurs et message informatifs.

    Celle-ci va être donc appelé systématiquement dans chaque batch développé et d'inscrire en dur le nom du package, je ne préfère pas dégradé les performances en appelant cette fonction.

    En tout cas Merci quand même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SQL> set timi on
    SQL> declare
      l_ch  varchar2(10);
    begin
      for i in 1..10000 Loop
        l_ch := who_am_i;
      End Loop;
    end;
    /  2    3    4    5    6    7    8
     
    Procédure PL/SQL terminée avec succès.
     
    Ecoulé : 00 :00 :00.50
    Donc 10000 appels dans 0,5 secondes. Il y a plus de chances de dégrader les performances par un mauvais algorithme dans le batch.

Discussions similaires

  1. Variable statique locale à une fonction membre
    Par oodini dans le forum Langage
    Réponses: 36
    Dernier message: 26/11/2011, 23h00
  2. [Google Maps] Extraire une locale variable dans une fonction anonyme
    Par 3logy dans le forum APIs Google
    Réponses: 4
    Dernier message: 17/12/2010, 12h02
  3. [NASM] Variables locales à une fonction
    Par Rémiz dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 13/11/2008, 10h33
  4. retour de variable d'une fonction
    Par thunderblade dans le forum ASP
    Réponses: 4
    Dernier message: 28/04/2005, 13h27
  5. Réponses: 5
    Dernier message: 09/02/2005, 18h50

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