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 :

Utilisation CASE WHEN avec une liste de valeurs


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Juin 2008
    Messages : 171
    Points : 65
    Points
    65
    Par défaut Utilisation CASE WHEN avec une liste de valeurs
    Bonjour à tous,

    Est-il possible d'utiliser le CASE avec une liste de valeurs du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	CASE nTouche
    		WHEN '1','2','3'
    			dbms_output.put_line('123');
    		WHEN '4','5','6'
    			dbms_output.put_line('456');
    		ELSE
    			dbms_output.put_line('7890');
    	END CASE;
    Merci pour vos réponses.

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    ce qu'il est possible de faire, c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CASE  
            WHEN nTouche in( '1','2','3')
                dbms_output.put_line('123');
            WHEN nTouche in('4','5','6')
                dbms_output.put_line('456');
            ELSE
                dbms_output.put_line('7890');
        END CASE;
    Cordialement,
    Franck.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Juin 2008
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    Bonjour Franck,

    Je viens d'essayer le script suivant :

    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
     
    SET ECHO OFF
    SET VERIFY OFF
    SET FEEDBACK OFF
    SET SERVEROUTPUT ON SIZE 1000000
     
    DECLARE
     
    	cErr VARCHAR2(255);
    	nErr NUMBER(1);
     
    BEGIN
     
    	dbms_output.put_line('SCRIPT :  TEST');
    	CASE
    		WHEN &1 IN(1,2,3)
    			dbms_output.put_line('123');
    		WHEN &1 IN(4,5,6)
    			dbms_output.put_line('456');
    		ELSE
    			dbms_output.put_line('7890');
    	END CASE;
    EXCEPTION
     
    	WHEN OTHERS THEN
    		cErr:=SQLERRM;
    		dbms_output.put_line('--- '||cErr||' ---');
     
    END;
    /
    J'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                            dbms_output.put_line('123');
                            *
    ERREUR à la ligne 11 :
    ORA-06550: line 11, column 4:
    PLS-00103: Encountered the symbol "DBMS_OUTPUT" when expecting one of the following:
    then and or
    The symbol "then" was substituted for "DBMS_OUTPUT" to continue.
    ORA-06550: line 13, column 4:
    PLS-00103: Encountered the symbol "DBMS_OUTPUT" when expecting one of the following:
    then and or
    The symbol "then" was substituted for "DBMS_OUTPUT" to continue.
    Merci pour ton aide.

  4. #4
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Bonjour,

    Essaie
    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
     
    SET ECHO OFF
    SET VERIFY OFF
    SET FEEDBACK OFF
    SET SERVEROUTPUT ON SIZE 1000000
     
    DECLARE
     
    	cErr VARCHAR2(255);
    	nErr NUMBER(1);
     
    BEGIN
     
    	dbms_output.put_line('SCRIPT :  TEST');
    	CASE
    		WHEN &1 IN(1,2,3) THEN
    			dbms_output.put_line('123');
    		WHEN &1 IN(4,5,6) THEN
    			dbms_output.put_line('456');
    		ELSE
    			dbms_output.put_line('7890');
    	END CASE;
    EXCEPTION
     
    	WHEN OTHERS THEN
    		cErr:=SQLERRM;
    		dbms_output.put_line('--- '||cErr||' ---');
     
    END;
    /

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    declare 
      nTouche varchar2(1);  
    begin
    CASE  
            WHEN nTouche IN( '1','2','3') Then
                dbms_output.put_line('123');
            WHEN nTouche IN('4','5','6') Then
                dbms_output.put_line('456');
            ELSE
                dbms_output.put_line('7890');
        END CASE;
    end;

  6. #6
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Juin 2008
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    Merci pour vos réponses, cela fonctionne.

    Bonne journée.

    PS : comment clôturer le sujet ?

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

Discussions similaires

  1. [AC-2010] Etat à générer avec une liste de valeurs
    Par oplaut dans le forum IHM
    Réponses: 4
    Dernier message: 13/05/2013, 10h27
  2. Utilisation de case when avec une sous requête
    Par gtraxx dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/03/2011, 16h44
  3. [MAPPING] map avec une liste pour valeur
    Par djodjo dans le forum Hibernate
    Réponses: 0
    Dernier message: 11/03/2010, 18h39
  4. Utilisation de random avec une liste
    Par husobom dans le forum Prolog
    Réponses: 4
    Dernier message: 24/11/2007, 23h43
  5. ORACLE : pseudo-table avec une liste de valeurs
    Par LEPTMR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/11/2006, 17h02

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