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 :

Date et erreur de type sur la console sql*plus


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Date et erreur de type sur la console sql*plus
    Bonsoir ,

    J'execute la requête suivante qui me retourne un " inconsistent datatypes: expected DATE got NUMBER " sous la console SQL*PLUS ORACLE 9.

    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
    alter session set nls_territory='FRANCE';
    alter session set nls_date_language='FRENCH';
    ALTER SESSION SET NLS_DATE_FORMAT='DDMMYYYY' ;
     
    Undefine date_deb
    Undefine date_fin 
     
    accept date_deb prompt 'Saisir la date de début de période (jjmmaaaa) : '
     
    accept date_fin prompt 'Saisir la date de fin de période (jjmmaaaa) : ' 
     
    select code1, libcode1 , code2 , refcode2 , libcode2, round(sum(duree)/60,2) as duree_minute_vers_heure,  TO_DATE(madate,'WW') as semaine
    from tab1
    left join tab2 on tab1.code1=tab2.code1     
    left join tab3 on tab1.code2=tab3.code2
    where acvdtd_aag between &date_deb and &date_fin
    and libcode1 LIKE 'toto%'
    group by code1, libcode1 , code2 , refcode2ref , libcode2,TO_DATE(madate,'WW');

    En base les dates ont ce format : AAAAMMJJ. Je souhaite à la place le numéro de semaine.

    Merci de m'aiguiller.

    Je ne vois pas pourquoi il me dit que le type date est sachant que c'est déjà une date ...
    Dernière modification par al1_24 ; 28/09/2015 à 18h29.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    Habituellement, SQL*Plus précise la ligne sur laquelle l'erreur est rencontrée... ce qui peut orienter vers sa résolution.
    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.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir

    1) Le problème vient de cette fonction :
    Code ORACLE : Sélectionner tout - Visualiser dans une fenêtre à part
    TO_DATE(madate,'WW')
    .

    2) L'erreur " inconsistent datatypes: expected DATE got NUMBER " vient de la ligne 6 du script . Ici je ne vois pas pourquoi il y a un erreur dans le script. J'ai fait un copié collé d'un autre script qui fait appelle exactement à la même fonction (saisi de date pour l'inteval) et dans l'autre requête il n'y aucun plantage.

    Ici Oracle me retourne une erreur alors qu'il n'y a pas lieu d'y en avoir . De plus à l'écran je vois très bien que le requête accepte ce qui est saisie.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    Quelle fonction ?

    Peut-on avoir l'intégralité des messages retournés par SQL*Plus ?
    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.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Voici ce qui est retourné :

    Code ORACLE : 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
     
    SQL> accept date_deb prompt 'Saisir la date de début de période (jjmmaaaa) : ' 
    Saisir la date de début de période (jjmmaaaa) : 20150101
    SQL> accept date_fin prompt 'Saisir la date de fin de période (jjmmaaaa) : ' 
    Saisir la date de fin de période (jjmmaaaa) : 20150201
    SQL > select code1, libcode1 , code2 , refcode2 , libcode2, round(sum(duree)/60,2) as duree_minute_vers_heure,  TO_DATE(madate,'WW') as semaine
    from tab1
    left join tab2 on tab1.code1=tab2.code1     
    left join tab3 on tab1.code2=tab3.code2
    where acvdtd_aag between &date_deb and &date_fin
    and libcode1 LIKE 'toto%'
    group by code1, libcode1 , code2 , refcode2ref , libcode2,TO_DATE(madate,'WW');
     
    select code1, libcode1 , code2 , refcode2 , libcode2, round(sum(duree)/60,2) as duree_minute_vers_heure,  TO_DATE(madate,'WW') as semaine
    from tab1
    left join tab2 on tab1.code1=tab2.code1     
    left join tab3 on tab1.code2=tab3.code2
    where acvdtd_aag between 20150101 and 20150201
    and libcode1 LIKE 'toto%'
    SQL> 
    erreur ligne 6 : ERROR ORA-00932: inconsistent datatypes: expected DATE got NUMBER
    SQL>
    group by code1, libcode1 , code2 , refcode2ref , libcode2,TO_DATE(madate,'WW');

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    L'information intéressante est ici :
    erreur ligne 6 : ERROR ORA-00932: inconsistent datatypes: expected DATE got NUMBER
    La ligne 6 de ta requête c'est : where acvdtd_aag between 20150101 and 20150201.
    Quel est le type de la colonne acvdtd_aag ?
    Sans doute une DATE au vu du message d'erreur qui explique qu'il faut la comparer avec des dates, pas des nombres.

    Yapuka :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where acvdtd_aag between TO_DATE('20150101', 'yyyymmdd') and TO_DATE('20150201', 'yyyymmdd')
    Ou en ramenant le nom des variables à la place des valeurs saisies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where acvdtd_aag between TO_DATE('&datedeb', 'yyyymmdd') and TO_DATE('&datefin', 'yyyymmdd')
    Toute la résolution de ton problème était dans la lecture du message d'erreur.
    Et quand Oracle te dit que l'erreur est à la ligne 6, c'est qu'il a de bonnes raisons de le penser.
    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.

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

Discussions similaires

  1. Erreur de lieur sur projet console
    Par Mercusyo dans le forum C++Builder
    Réponses: 6
    Dernier message: 23/09/2012, 14h49
  2. [Turbo Pascal] [XP SP3] Erreur au lancement sur la console
    Par Joooseph dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 06/12/2009, 14h30
  3. Erreur de type sur un code
    Par Mr T 94 dans le forum IHM
    Réponses: 6
    Dernier message: 24/02/2009, 23h47
  4. erreur de connection sur une base sql à partir de vb6
    Par diatta dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/04/2007, 13h12
  5. Réponses: 8
    Dernier message: 20/02/2006, 15h28

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