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

SQL Oracle Discussion :

Compréhension d'une fonction sous Oracle


Sujet :

SQL Oracle

  1. #1
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut Compréhension d'une fonction sous Oracle
    Bonjour!

    Je dois effectuer une modification dans un (long!!) programme, et avant toute chose j'essai de comprendre exactement ce qu'il fait.

    Et notament je tombe sur une fonction oracle, et je ne comprend pas du tout ce qu'elle fait!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    create or replace FUNCTION F_NEW_NUMERO(value_n NUMBER) RETURN NUMBER IS N NUMBER;
    BEGIN
        if value_n  > 1000  then
           BEGIN
             select 200000+min(numero_id) INTO N  from MaTable
             where flag=1 
             and (200000+numero_id not in (select numero_id from MaTable ));
             RETURN N;       
           END;        
         else  RETURN value_n ;           
         end IF;   
    END F_NEW_NUMERO;
    Pour les valeurs inférieur à 1000, c'est facile, cette fonction retourne la valeur passée en paramètre. Par contre, pour le reste, j'avou que pour moi c'est totalement incompréhensible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         select 200000+min(numero_id) INTO N  from MaTable
         where flag=1 
         and (200000+numero_id not in (select numero_id from MaTable ));
         RETURN N;
    Si quelqu'un pouvait m'aider, se sera vraiment sympa...

    Merci d'avance...

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    ca pourtant pas sorcier....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
        SI valeur > 1000 ALORS
     
        RETOURNE 200000 + la plus petite valeur du champs numero_id stocké dans MaTable  et dont le champs flag de la même ligne est égal à 1 et seulement si cette somme (200000 + la plus petite valeur du champs numero_id) n existe pas dans ma maTable
     
        SINON
     
            RETOURNE valeur
     
        FIN SI
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Merci de ton aide!

    J'étais arrivé à la même conclusion, donc ca me conforte dans mon idée!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/02/2012, 11h03
  2. Config d'une Datasource sous Oracle
    Par adilov dans le forum Wildfly/JBoss
    Réponses: 13
    Dernier message: 14/03/2007, 21h27
  3. Réponses: 3
    Dernier message: 23/01/2007, 09h20
  4. Demarrage automatique d'une base sous oracle 9i
    Par tarekos dans le forum Oracle
    Réponses: 4
    Dernier message: 20/03/2006, 17h48
  5. Encore une jointure sous Oracle pour la route
    Par ebaynaud dans le forum Langage SQL
    Réponses: 15
    Dernier message: 04/11/2004, 11h40

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