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

SQL Oracle Discussion :

Probleme de case


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Probleme de case
    Bonjour, je suis un nouvel arrivant, et j'ai un petit blocage en SQL:

    Suivant la valeur d'un de mes champs, récupéré grace a un API, je voudrais tester la valeur de la date d'une de mes données avec un select case (ou autre si vous proposez...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select 
    case API.Get_Applied_Date("mes données d'entrées")
    when API.Get_Applied_Date("mes données d'entrées") IN 
    (select API.Get_Applied_Date("mes données d'entrées") from ma_table
                        where API.Get_Applied_Date("mes données d'entrées")  <= '&date' 
                        and API.Get_Revised_Due_Date("mes données d'entrées") >= '&date'))
    then 'OK'
    else 'error'
    end
     
    from ma_table
    cependant, cela ne fonctionne pas... Quelle est l'erreur ? Ou avez vous une solution pour outrepasser un select case ?

    cordialement.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    à mon avis le PL/SQL serait plus adapté :
    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
     
    set serveroutput on size 1000000
    DECLARE
    date_applied DATE := API.Get_Applied_Date("mes données d'entrées");
    dummy NUMBER;
    BEGIN
     
    select 1
    into dummy
    from ma_table
    where date_applied BETWEEN '&date'  AND '&date';
     
    DBMS_OUTPUT.PUT_LINE('OK');
     
    EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
    DBMS_OUTPUT.PUT_LINE('error');
    Sinon, la syntaxe c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT CASE 
    WHEN <condition> THEN <valeur>
    ELSE <valeur>
    END
    FROM

  3. #3
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    oups, j'ai du me tromper ou oublier de preciser que je travaille sur une base Oracle...et je ne peux faire autrement qu'en SQL, ou au pire en Windev.
    Sinon pour la syntaxe, je pense la respecter, je me demande juste pourquopi il me jette...

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    j'avais bien compris que c'était sous Oracle

    Et non, la syntaxe est incorrecte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    case API.Get_Applied_Date("mes données d'entrées")
    when API.Get_Applied_Date("mes données d'entrées") IN


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    case 
    when API.Get_Applied_Date("mes données d'entrées") IN

  5. #5
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    ok, la faute crevait les yeux... (lundi difficile)
    Je teste et je te tiens au jus.
    merci

  6. #6
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bon apparement maintenant il en veut aux API que j'utilise (deux differents) pour récupérer deux dates.

    select
    ma_ref,
    case
    when ma_ref IN
    (select API.Get_Applied_Date(...) from ma_table
    where API.Get_Applied_Date(...) <= '&date' )
    and API.Get_Revised_Due_Date(...) >= '&date')
    then 'PAS OK'
    else 'error'
    end

    from
    ma_table

  7. #7
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bon rien à faire... Je vais trouver une autre solution. Merci d'y avoir consacrer du temps.

Discussions similaires

  1. probleme de case a cocher
    Par Damish dans le forum ASP
    Réponses: 2
    Dernier message: 03/10/2006, 08h55
  2. [PL/SQL] Probleme de CASE
    Par Bahan dans le forum Oracle
    Réponses: 1
    Dernier message: 16/08/2006, 17h53
  3. probleme de case avec un u_short
    Par [thebadskull] dans le forum C
    Réponses: 4
    Dernier message: 06/11/2005, 16h32
  4. [java]probleme de case dans switch
    Par mousstik dans le forum Langage
    Réponses: 8
    Dernier message: 19/09/2005, 16h27
  5. Probleme de cases a cocher...
    Par linou dans le forum Web
    Réponses: 3
    Dernier message: 25/05/2005, 14h37

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