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 :

Problème sur requête sql


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 41
    Points
    41
    Par défaut Problème sur requête sql
    bonsoir
    Je bloque sur une requête SQL qui semble être très simple .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table title ( title_id number (10)  
    ,title varchar2 (60) not     null
    ,description  varchar2(400) not null
    , rating  varchar2(4)
    ,category  varchar2(20) 
    , release_date date 
    , constraint pk_a primary key ( title_id ));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    insert into title 
    values ('TITLE_ID_SEQ.nextval'
    ,'Willie and Christmas Too'
    ,'All of Willie s friends make a Christmas list for Santa but
                                    Willie has yet to add his own wish list'
    ,'G'
    ,'CHILD'
    ,'05-OCT-1995');
    sql plus m'affiche ce message : Nombre non valide

    J'ai bien vérifié les apostrophes et les parenthèses mais je ne sais pas pourquoi cette erreur
    aidez-moi s'il-vous-plait,
    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Quel gestionnaire de base de données utilises-tu?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'TITLE_ID_SEQ.nextval'
    Les apostrophes doivent être utilisées pour les valeurs de type chaine de caractère or ici il s'agit d'un nombre => il faut donc retirer les apostrophes.

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    salut j'utilise sql plus d oracle

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    Quand j'ai enlevé les apostrophes voila l'erreur déclenchée : (caractère non numérique trouvé à la place d'un caractère numérique)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re,

    Comment as-tu créé ta séquence?

    Que te donne le résultat de la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT TITLE_ID_SEQ.nextval FROM DUAL
    Dernière modification par Invité ; 19/12/2010 à 01h17.

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    le résultat c est

    NEXTVAL
    --------
    93

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ok,

    L'erreur est située au niveau de ta date.

    Remplace
    par

    et ton insert devrait s'effectuer sans problème

  8. #8
    Membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    salut mygale 1978
    j ai mis

    a la place de mais toujours je reçois le même message


  9. #9
    Invité
    Invité(e)
    Par défaut
    Es-tu sûr que tu n'a pas remis les apostrophes pour la séquence?




    J'ai testé l'insert suivant chez moi et ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    INSERT INTO title VALUES 
    (title_id_seq.NEXTVAL,
     'Willie and Christmas Too',
    'All of Willie s friends make a Christmas list for Santa but Willie has yet to add his own wish list',
    'G',
    'CHILD',
    '05-10-1995');
     
    1 row(s) inserted.
     
     
    0,16 seconds

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il faut vérifier le format de date utilisé par ta base de données. Si c'est le format ISO, il faut remplacer '05-10-1998' par '1998-10-05'.

    Tatayo.

  11. #11
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 804
    Points
    30 804
    Par défaut
    Ne connaissant pas le format de date pris en charge par la configuration de ta base de données, tu as toujours intérêt à définir explicitement la conversion de tes dates dans les requêtes de mise à jour ou d'insertion.

    Avec Oracle, tu utiliseras la fonction TO_DATE à cet effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSERT INTO title 
    VALUES 
    (title_id_seq.NEXTVAL,
     'Willie and Christmas Too',
    'All of Willie s friends make a Christmas list for Santa but Willie has yet to add his own wish list',
    'G',
    'CHILD',
    TO_DATE('05-10-1995', 'DD-MM-YYYY')
    );
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  12. #12
    Membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    bonjour tout le monde

    merci maygale 1978 ,j ai tester to_date et ça marche bien mais quand je remplace '05-10-1995' par '05-OCT-1995'

    sql plus m'affiche ERREUR Ó la ligne 2 :
    ORA-01843: ce n'est pas un mois valide)

    voila le code complet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    create table TITLE(TITLE_ID number(10) constraint ti_pk primary key not null,
                  TITLE varchar2(60) not null, DESCRIPTION varchar2(400) not null, RATING varchar2(4) constraint tit_rat check (Rating in('G','PG','R','NC17','NR')) ,
                  CATEGORY varchar2(20) constraint ti_cat check (CATEGORY in('DRAMA','COMEDY','ACTION','CHILD','SCIFI','DOCUMENT ARY')), RELEASE_DATE date);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    insert into title values (title_id_seq.NEXTVAL,'Willie and Christmas Too','All of Willie s friends make a Christmas list for Santa but
                                    Willie has yet to add his own wish list','G','CHILD',TO_DATE('05-OCT-1995', 'DD-MON-yyyy'));
    merci les amis

  13. #13
    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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as impdata
     
    SQL> 
    SQL> Select TO_DATE('05-OCT-1995', 'DD-MON-yyyy')
      2    from dual
      3  /
     
    Select TO_DATE('05-OCT-1995', 'DD-MON-yyyy')
      from dual
     
    ORA-01843: ce n'est pas un mois valide
     
    SQL> 
    SQL> Select TO_DATE('05-OCT.-1995', 'DD-MON-yyyy')
      2    from dual
      3  /
     
    TO_DATE('05-OCT.-1995','DD-MON
    ------------------------------
    05/10/1995
     
    SQL>

  14. #14
    Membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    alors d après se que j ai compris c est impossible d'insérer une date sous la forme DD-MON-yyyy et puis l'avoir enregistrer comme par exemple 05-oct-2010 ?

  15. #15
    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 074
    Points
    8 074
    Par défaut
    Ce que Mnitu a voulu vous montrer, c'est que les abréviations de mois reconnues par Oracle doivent être respectées strictement, sinon vous n'arriverez pas à faire accepter votre date.
    Ces abréviations dépendent de la langue de votre session et de la version d'Oracle.

    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
    SQL> show release
    release 1002000400
    SQL>
    SQL>
    SQL> alter session set nls_date_language=french;
     
    SQL>  select to_char(to_date(num_mois, 'MM'), 'MON') as code_mois from (select rownum as num_mois from dual connect by rownum <= 12);
     
    CODE_
    -----
    JANV.
    FÉVR.
    MARS
    AVR.
    MAI
    JUIN
    JUIL.
    AOÛT
    SEPT.
    OCT.
    NOV.
    DÉC.
     
     
    SQL> alter session set nls_date_language=english;
     
    SQL>  select to_char(to_date(num_mois, 'MM'), 'MON') as code_mois from (select rownum as num_mois from dual connect by rownum <= 12);
     
    COD
    ---
    JAN
    FEB
    MAR
    APR
    MAY
    JUN
    JUL
    AUG
    SEP
    OCT
    NOV
    DEC
    Si vous dites "OCT" alors qu'Oracle attend "OCT.", ça ne marche pas !

    Pour éviter ce genre d'ennuis, il est vivement conseillé de ne pas utiliser les abréviations de mois lors de vos INSERT, mais plutôt le numéro de mois, sur lequel il n'y aura pas d'ambiguïté, comme montré par Mygale1978 ou Al1_24.
    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

  16. #16
    Membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    d accord maintenant j ai bien compris merci beaucoup pour votre explication

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

Discussions similaires

  1. Problème sur requête sql
    Par titeufdev dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/12/2010, 00h09
  2. problème sur requête SQL
    Par Ohemeg dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/12/2010, 00h50
  3. Problème sur requête SQL
    Par oskour dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2010, 14h22
  4. Problème sur Requête sql
    Par devdev dans le forum Développement
    Réponses: 1
    Dernier message: 16/06/2009, 11h24
  5. Problème sur requête SQL (Caféine)
    Par Jean-Pierre49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2007, 08h19

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