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 :

Comment tester si une variable est dans une liste de valeurs ?


Sujet :

PL/SQL Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Comment tester si une variable est dans une liste de valeurs ?
    Bonjour,

    pour l'instant, dans le code d'un package PL/SQL, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (my_var IN (4,5,8,11,42)) THEN faire qqchose
    Je voudrais simplement ne pas avoir cet ensemble codé "en dur" dans ma procédure, mais dans le header du package, avec d'autres variables globales.

    Mon code serait alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (my_var IN (var_list)) THEN faire qqchose
    Question : comment on réalise cela ??

    PS : j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TYPE CODE_LIST IS VARRAY (5) OF  NUMBER;
    var_list CODE_LIST:= CODE_LIST(4,5,8,11,42)
    mais à par parcourir la liste avec une LOOP, je ne vois pas comment faire.

    Des suggestions ??

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 077
    Points
    8 077
    Par défaut
    Bonjour et bienvenue sur le forum !

    Merci de prendre l'habitude de mettre un titre significatif à vos questions pour faciliter les recherches ultérieures.

    Outre les collections auxquelles vous avez pensé spontanément, peut-être le stockage de votre liste sous forme de simple variable VARCHAR2 est-il judicieux.
    En effet, si jamais vous construisez vos requêtes dynamiquement, en vue d'une exécution par EXECUTE IMMEDIATE, il vous suffira de concaténer cette variable avec les autres éléments de la requête, sans vous préoccuper outre-mesure de la décomposition de cette variable.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci,
    OK : Titre modifié.

    Ce bout de code est utilisé directement dans la logique fonctionnelle de la proc stock: je ne fais pas de requête.

    Au départ, je voulais rendre mon code un peu plus propre, je croyais que ça allait me prendre 3 minutes !!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    Citation Envoyé par wxcvbnbvcx Voir le message
    Bonjour,

    pour l'instant, dans le code d'un package PL/SQL, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (my_var IN (4,5,8,11,42)) THEN faire qqchose
    Je voudrais simplement ne pas avoir cet ensemble codé "en dur" dans ma procédure, mais dans le header du package, avec d'autres variables globales.

    Mon code serait alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (my_var IN (var_list)) THEN faire qqchose
    Question : comment on réalise cela ??
    Voici un exemple comment on réalise ça mais il faut avoir plus d'information afin de juger ...

    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
    set serveroutput on
    
    declare
      TYPE num_liste IS TABLE OF NUMBER;
      v_liste num_liste;
    BEGIN
      v_liste := num_liste(1, 2, 3, 4, 3);
      if 4 MEMBER OF v_liste then
        dbms_output.put_line('oui');
      else
        dbms_output.put_line('non');
      end if;
    END;
    /
    Consultant et formateur Oracle

  5. #5
    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 wxcvbnbvcx Voir le message
    ...
    Mon code serait alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (my_var IN (var_list)) THEN faire qqchose
    ...
    Difficile à dire si après ce changement le code sera vraiment plus lisible, je trouve mieux de remplacer les valeurs en dur par des constantes (mais c’est une question de goût peut être).

Discussions similaires

  1. [PHP 5.3] Comment savoir si une string est dans une variable
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 29/10/2011, 15h08
  2. Réponses: 0
    Dernier message: 15/11/2009, 17h40
  3. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  4. Réponses: 4
    Dernier message: 17/12/2007, 14h46
  5. récupérer une variable javascript dans une variable java
    Par tx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2006, 17h55

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