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 :

[Debutant] erreur ORA-01741


Sujet :

Oracle

  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Points : 150
    Points
    150
    Par défaut [Debutant] erreur ORA-01741
    Salut,

    J'ai une erreur ORA-01741 que je ne comprend pas. A quoi est du cette erreur.
    En fait j'effectue un select sur une base oracle en passant par du code java. Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ResultSet rs = st.executeQuery("SELECT TBATCHSCH.PK_TBATCHSCH,session_consigne, TBATCHSCH.uj, TBATCHSCH.retour, TBATCHSCH.id_consigne, contenu FROM TBATCHSCH,TCONSIGNESCH where date_validation " +
                            "is not null and TCONSIGNESCH.PK_TCONSIGNESCH=TBATCHSCH.id_consigne order by session_consigne " );
    L'erreur c'est ORA-01741 illegal zero-lengh identifier

  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
    essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultSet rs = st.executeQuery("SELECT TBATCHSCH.PK_TBATCHSCH,session_consigne, TBATCHSCH.uj, TBATCHSCH.retour, TBATCHSCH.id_consigne, contenu FROM TBATCHSCH,TCONSIGNESCH where date_validation is not null and TCONSIGNESCH.PK_TCONSIGNESCH=TBATCHSCH.id_consigne order by session_consigne " );

  3. #3
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Points : 150
    Points
    150
    Par défaut
    Je viens d'essayer ce code mais j'ai toujours la même erreur : ORA-01741

    peut etre que c à cause de ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultSet rs2 = st2.executeQuery("SELECT contenu, contenuAnglais, auteur  FROM TCONSIGNESCH where PK_TCONSIGNESCH= " + id);

  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
    t'es sûr que id est bien renseigné ?

  5. #5
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Points : 150
    Points
    150
    Par défaut
    oui, car le meme code matrchait tres bien avac une base mysql et il n'y avait pas de pb.

  6. #6
    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
    essaye avec une valeur en dur sans le + id

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Dans tous ces traitement de requêtes composées dynamiquement (que ce soit en java, PL/SQL etc...) , je pense qu'il est bienvenu de toujours passer par une variable intermédiaire dans laquelle on met la totalité de la requête avant de l'exécuter. Ainsi, on peut la tracer avant de l'exécuter, ou bien tracer la requête dans un catch java....

    Parceque deviner une erreur sans avoir la requête qui l'a provoqué, c'est pas évident évident....

  8. #8
    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
    Il faudrait aussi vérifier la façon d'utiliser les " dans la requête complète
    car il semble qu'Oracle attend un identificateur et qu'il reçoit "".

    ORA-01741 illegal zero-length identifier

    Cause: An attempt was made to use two double quotes ("") as an identifier. An identifier must be at least one character long.

    Action: Insert at least one character between the double quotes in the identifier. If a blank identifier is required, specify a blank space between the double quotes (" ").

  9. #9
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par pifor
    Il faudrait aussi vérifier la façon d'utiliser les " dans la requête complète
    car il semble qu'Oracle attend un identificateur et qu'il reçoit "".
    Oui mais le pb c'est qu'en java il n'y a pas d'autres solutions pour lier une variable à une requete sans passer par les "" .
    J'ai essayé d'enlever les "" er de faire la chose suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String requete = "SELECT contenu, contenuAnglais, auteur  FROM TCONSIGNESCH where PK_TCONSIGNESCH= 180";
    mais j'ai toujours le meme problème.

  10. #10
    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
    Oui mais le pb c'est qu'en java il n'y a pas d'autres solutions pour lier une variable à une requete sans passer par les "" .
    Je ne crois pas. Avec JDBC, il faut utiliser un PreparedStatement, utiliser en SQL le "?" et lier la valeur avant execution avec la méthode setXXX:

    Exemple:

    PreparedStatement pstat =
    conn.prepareStatement
    ("select ename, empno "+
    "from emp " +
    "where job = 'CLERK' " +
    "and ename like ?" );

    pstat.setString( 1, ename_like );

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/05/2011, 18h14
  2. [Debutant] Erreur ORA-00904
    Par gloglo dans le forum Oracle
    Réponses: 6
    Dernier message: 13/10/2006, 10h04
  3. debutant: erreur LNK2001 avec la librairie GSL
    Par drill3 dans le forum MFC
    Réponses: 6
    Dernier message: 25/04/2005, 13h58
  4. erreur ora-12801 : error signaled in parallel query server
    Par dngaya dans le forum Administration
    Réponses: 5
    Dernier message: 15/04/2004, 16h25
  5. erreur "ORA-22905" lors de l'execution d'un requet
    Par benji999 dans le forum Administration
    Réponses: 26
    Dernier message: 14/04/2004, 11h47

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