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 :

[Oracle 9i] PL/SQL: savoir si ma var se trouve dans mon curs


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Par défaut [Oracle 9i] PL/SQL: savoir si ma var se trouve dans mon curs
    Bonjour,
    J'aimerais savoir comment il est possible de tester si le contenu d'une variable se trouve dans un curseur statique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    --Mon curseur
        CURSOR c_varexpuser IS
           SELECT DISTINCT COLUMN_NAME
           FROM USER_TAB_COLUMNS
           WHERE TABLE_NAME LIKE 'EXP_%';
     
    ...
    mavariable=...
     
    -- Si mavariable est dans le curseur c_varexpuser alors
        -- traitement spécifique
    Est-ce que c'est possible facilement avec une commande du style "IF .. IN" ?
    Merci d'avance.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    c'est quoi mavariable ??? Est-ce qu'une valeur désignée par la variable est dans le curseur ? Tu cherches si une colonne est présente dans une table ?

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Ben non, le curseur est juste déclaré, mais n'est pas exécuté.
    Ensuite lorsqu'il est exécuté, il l'est ligne à ligne.
    soit tu passes la variable en paramètre au curseur (dans le cas où le curseur ne te sert à faire que ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    --Mon curseur 
    CURSOR c_varexpuser (p_var IN VARCHAR2) IS 
     SELECT DISTINCT COLUMN_NAME 
     FROM USER_TAB_COLUMNS 
     WHERE TABLE_NAME LIKE 'EXP_%'
     AND column_name = p_var; 
     
    FOR r IN c_varexpuser(mavariable)
    LOOP montraitement; END LOOP;
    Soit tu testes dans la boucle du curseur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    --Mon curseur 
    CURSOR c_varexpuser IS 
     SELECT DISTINCT COLUMN_NAME 
     FROM USER_TAB_COLUMNS 
     WHERE TABLE_NAME LIKE 'EXP_%'; 
     
    FOR r IN c_varexpuser
    LOOP
    ...
     IF r.column_name = mavariable THEN montraitement; END IF;
    ...
    END LOOP;

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Par défaut
    merci, je devrais pouvoir m'en sortir...
    Bon week-end à vous tous

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Par défaut
    Pour finir, j'ai fais une fonction qui retourne un boolean

    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
     
       FUNCTION ISINEXP(PE_MAVAR IN VARCHAR2) RETURN BOOLEAN
       IS
         VL_VAR  VARCHAR2(30);
       BEGIN
         SELECT COLUMN_NAME INTO VL_VAR
         FROM USER_TAB_COLUMNS
         WHERE TABLE_NAME LIKE 'EXP_%'
         AND COLUMN_NAME=PE_MAVAR;
         -- Si n'a pas déclanché l'exception, la variable existe dans une table d'export.
         -- On retourne true.
         RETURN TRUE;
         EXCEPTION
    	  WHEN NO_DATA_FOUND THEN
    	   -- Si on arrive dans cette exception, la variable n'existe pas. On retourne false.
           RETURN FALSE;
       END;
    ensuite, utilisation de cette fonction dans le if:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    IF ISINEXP(mavariable) THEN
    ...

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Ca va planter si tu as 2 colonnes de même nom sur 2 tables différentes.
    De plus pour faire juste un test d'existence, mieux vaut ne pas ramener une colonne.
    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
     
       FUNCTION ISINEXP(PE_MAVAR IN VARCHAR2) RETURN BOOLEAN
       IS
         VL_VAR  NUMBER;
       BEGIN
         SELECT 1 INTO VL_VAR
         FROM USER_TAB_COLUMNS
         WHERE TABLE_NAME LIKE 'EXP_%'
         AND COLUMN_NAME=PE_MAVAR
         AND ROWNUM = 1;
         -- Si n'a pas déclenché l'exception, la variable existe dans une table d'export.
         -- On retourne true.
         RETURN TRUE;
         EXCEPTION
    	  WHEN NO_DATA_FOUND THEN
    	   -- Si on arrive dans cette exception, la variable n'existe pas. On retourne false.
           RETURN FALSE;
       END;

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Par défaut
    merci pour le bon conseil!

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

Discussions similaires

  1. Savoir s'il y a qqch dans mon myRecordSet.Fields(0)
    Par swissmade dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/08/2007, 17h12
  2. Réponses: 1
    Dernier message: 16/03/2007, 11h46
  3. [Tableaux] Savoir ou l'on se trouve dans l'arborescence
    Par Jim_Nastiq dans le forum Langage
    Réponses: 5
    Dernier message: 27/07/2006, 23h18
  4. Réponses: 1
    Dernier message: 26/06/2006, 14h16
  5. Réponses: 2
    Dernier message: 06/06/2005, 15h13

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