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 :

Faire une select avec une condition IN () où le contenue du IN est une collection


Sujet :

PL/SQL Oracle

  1. #1
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut Faire une select avec une condition IN () où le contenue du IN est une collection


    je souhaiterai faire la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM TOTO WHERE ID IN (maCollection)
    où maCollection est une varibale de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TYPE TypeNumber is table of PLS_INTEGER;
    maCollection TypeNumber;
    J'aimerai savoir si c'est possible et si oui, comment je peux l'écrire ?

    d'avance pour vos réponses
    Il y a de jeunes pilotes audacieux, il y a de vieux pilotes, mais il n'y a pas de vieux pilotes audacieux


  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Il faut utiliser TABLE, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select column_value
      from table(sys.odcinumberlist(1, 2, 3));
     
    COLUMN_VALUE
    1
    2
    3

  3. #3
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut
    Bonjour Waldar

    merci pour ta réponse rapide

    Et j'ai des questions ^^ :
    Est-ce que tu peux me donner un lien qui explique le fonctionnement de cette méthode ?

    Et est-ce que je peux initialiser sys.odcinumberlist avec ma collection à moi ?

    Merci d'avance pour tes réponses
    Il y a de jeunes pilotes audacieux, il y a de vieux pilotes, mais il n'y a pas de vieux pilotes audacieux


  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Vous pouvez directement utiliser vos collections.
    Regardez du côté de la doc Oracle :
    http://download.oracle.com/docs/cd/B....htm#ADDCI2140

  5. #5
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut


    Afin de cloturer ce thread, voici la solution que j'ai mis en place grâce aux réponses de Waldar

    j'ai crée 1 objet et sa liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TYPE MON_OBJ_ID AS OBJECT(ID NUMBER);
    /
    CREATE TYPE MON_OBJ_LIST_ID AS TABLE OF MON_OBJ_ID;
    /
    Ensuite je me suis fait une petite procedure de test :
    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
    20
    21
    22
     
    create or replace PROCEDURE       "PROC_TEST" IS
       objId  MON_OBJ_ID := MON_OBJ_ID(0);
       listObjId MON_OBJ_LIST_ID := MON_OBJ_LIST_ID(objId );
     
        TYPE TypeNumber is table of PLS_INTEGER index by PLS_INTEGER;
        listNum TypeNumber;
      BEGIN
        DBMS_OUTPUT.ENABLE (1000000);
        FOR i IN 1..10 LOOP
           objId.ID := i;
           listObjId (i) := objId;
           listObjId.EXTEND;
        END LOOP;
     
       SELECT id BULK COLLECT INTO listNum FROM TABLE(c);
     
       FOR i IN listNum.FIRST..listNum.LAST LOOP
        DBMS_OUTPUT.put_line('val : ' || i);
       END LOOP;
     
    END ;
    Ce qui fait que je peut utiliser ma collection dans ma requete SELECT

    Encore merci pour le coup de main
    Il y a de jeunes pilotes audacieux, il y a de vieux pilotes, mais il n'y a pas de vieux pilotes audacieux


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2011, 14h10
  2. JPA + Hibernate : faire un select avec une null value
    Par bubulemaster dans le forum Persistance des données
    Réponses: 2
    Dernier message: 17/06/2010, 10h24
  3. Réponses: 4
    Dernier message: 12/10/2007, 07h20
  4. Comparaison d'une selection avec une cellule
    Par Swiper dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2007, 11h29
  5. Faire un select avec une exclusion d'une autre table
    Par polemoss dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/12/2006, 10h10

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