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

Oracle Discussion :

[SQL]Référencer les valeurs d'une variables ('a','b','c') en utilisant l'opérateur IN


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 6
    Points
    6
    Par défaut [SQL]Référencer les valeurs d'une variables ('a','b','c') en utilisant l'opérateur IN
    Bonjour,

    Je me demande s'il est possible de référencer le contenu d'une variable comme étant plusieurs valeurs plutôt qu'un seule.

    Exemple :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    DROP TABLE alphabet;
     
    CREATE Table alphabet (lettre VARCHAR2(1));
     
    INSERT INTO alphabet VALUES ('a');
    INSERT INTO alphabet VALUES ('b');
    INSERT INTO alphabet VALUES ('c');
    INSERT INTO alphabet VALUES ('d');
    INSERT INTO alphabet VALUES ('e');
     
    COMMIT;
     
    SET SERVEROUTPUT ON
     
    DECLARE
     
    --
    -- J'aimerais que v1 puisse contenir plusieurs valeurs ex : a, b et c pour 
    -- utiliser avec l'opérateur IN du curseur.
    --
    v1 VARCHAR2(10);
     
    CURSOR cur1 IS
    SELECT lettre
    FROM alphabet
    WHERE lettre IN v1;
     
    BEGIN
    FOR rec1 IN cur1 LOOP
    dbms_output.put_line(rec1.lettre);
    END LOOP;
    END;
    /
    Oracle Database 10g Release 10.1.0.3.0 - Production

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Tel quel ce n'est pas possible, mais avec des ref cursors cela l'est

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Exemple:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    SQL> 
    SQL> DROP TABLE alphabet;
    Table dropped.
    SQL> 
    SQL> CREATE Table alphabet (lettre VARCHAR2(1));
    Table created.
    SQL> 
    SQL> INSERT INTO alphabet VALUES ('a');
    1 row created.
    SQL> INSERT INTO alphabet VALUES ('b');
    1 row created.
    SQL> INSERT INTO alphabet VALUES ('c');
    1 row created.
    SQL> INSERT INTO alphabet VALUES ('d');
    1 row created.
    SQL> INSERT INTO alphabet VALUES ('e');
    1 row created.
    SQL> 
    SQL> COMMIT;
    Commit complete.
    SQL> 
    SQL> SET SERVEROUTPUT ON
    SQL> 
    SQL> DECLARE
      2  
      3  --
      4  -- J'aimerais que v1 puisse contenir plusieurs valeurs ex : a, b et c pour
      5  -- utiliser avec l'opérateur IN du curseur.
      6  --
      7  v1 VARCHAR2(30);
      8  TYPE trc IS REF CURSOR;
      9  rc trc;
     10  l VARCHAR2(1);
     11  BEGIN
     12  v1:=' ''a'',''b'', ''c'' ';
     13  OPEN rc FOR 'SELECT lettre FROM alphabet WHERE lettre IN (' || v1 ||')';
     14  LOOP
     15  FETCH rc INTO l;
     16  EXIT WHEN rc%NOTFOUND;
     17  dbms_output.put_line(l);
     18  END LOOP;
     19  END;
     20  /
    a                                                                               
    b                                                                               
    c                                                                               
    PL/SQL procedure successfully completed.
    SQL> show errors
    No errors.
    SQL> exit

  4. #4
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut

    J'ai pas eu le courage de mettre le code

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    J'ai écris un article en ce sens:
    http://fdegrelle.over-blog.com/article-1694534.html

  6. #6
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    J'ai le meme problème a partir d'un programme Pro*C existe t il aussi une solution en restant en C (sans inclure un bloc PL/SQL) dans mon code.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/10/2012, 09h43
  2. Réponses: 4
    Dernier message: 22/02/2012, 18h07
  3. macro excel renvoyant toutes les valeurs d'une variable
    Par eclipse012 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/11/2008, 15h41
  4. Mode debug : afficher les valeurs d'une variable
    Par zenux dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 05/04/2008, 12h44
  5. Recuperer les valeurs d'une variable
    Par yoann_deygas dans le forum MATLAB
    Réponses: 1
    Dernier message: 18/06/2007, 11h10

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