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 ORA-00904: identificateur non valide


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 38
    Points
    38
    Par défaut Problème ORA-00904: identificateur non valide
    Salut j'ai un souci d'insertion depuis quelques semaine maintenant.
    En fait je developpe une application en jsp avec une base sous oracle.
    Mon problème se pose lors de l'insertion dans une de mes tables pourtant l'insertion dans les se passe bien et c'est le meme code.
    Voici le code de creation de ma table

    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
    CREATE TABLE  "AGENTC" 
       (	"MATRICULE" VARCHAR2(30) NOT NULL ENABLE, 
    	"CERTIFICATMED" DATE, 
    	"DATEQUALIFICATION1" DATE, 
    	"NOMAGENT" VARCHAR2(128), 
    	"PRENOMAGENT" VARCHAR2(128), 
    	"SEXE" VARCHAR2(1), 
    	"DATENAISSANCE" DATE, 
    	"NATIONALITE" VARCHAR2(50), 
    	"FONCTION" VARCHAR2(50), 
    	"DATERECRUTEMENT" DATE, 
    	"NIVEAU" NUMBER, 
    	"DATERETRAITE" DATE, 
    	"NUMFORMATION" NUMBER, 
    	"DATECONTROL" DATE, 
    	"DATEIMMERSION" DATE, 
    	"PERFECTIONNEMENT" DATE, 	 
    CONSTRAINT "PK_AGENTC" PRIMARY KEY ("MATRICULE") ENABLE, 
    	 CONSTRAINT "FK_AGENTC_AGENT" FOREIGN KEY ("MATRICULE")
    	  REFERENCES  "AGENT" ("MATRICULE") ENABLE, 
    	 CONSTRAINT "FK_NUMFORMATION" FOREIGN KEY ("NUMFORMATION")
    	  REFERENCES  "FORMATIONINITIALE" ("NUMFORMATION") ENABLE
       )
    /
    Pour l'insertion je recupère les données d'un formulaire que je traite pour les adapter au format DATE et NUMBER(puisque je les recupère en STRING) afin de pouvoir les inserer. Voici les codes
    la fonction d'insertion
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
     
    public void InsertControleur(String Matricule, String CertificatMed, String DateQualif1, String NomAgent, String PrenomAgent, 
                                         String Sexe, String DateNaissance, String Nationalite, String Fonction, String DateRecrutement, 
                                         String Niveau, String NumFormation, String DateRetraite, String Control, 
                                         String Immersion, String Perfectionnement) throws SQLException, Exception
            {
                conex = new Connexion();
                con = conex.getConn();
                Statement stmt = con.createStatement();
     
                //Requete d'ajout de la formation initiale
                String reqInsert = "INSERT INTO AGENT (MATRICULE, CERTIFICATMED, DATEQUALIFICATION1, NOMAGENT, PRENOMAGENT, SEXE, DATENAISSANCE, " +
                                    "NATIONALITE, FONCTION, DATERECRUT, NIVEAU, DATERETRAITE, " +
                                    "NUMFORMATION, DATECONTROL, DATEIMMERSION, PERFECTIONNEMENT)"+
                                    "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
     
     
                   java.sql.Date datenaissance = null;
                   java.sql.Date daterecrutement = null;
                   java.sql.Date dateretraite = null;
                   java.sql.Date certificatmed = null;
                   java.sql.Date datequalif1 = null;
                   java.sql.Date control = null;
                   java.sql.Date immersion = null;
                   java.sql.Date perfectionnement = null;
                   int nivo = 0;
                   int numform = 0;
                   SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
     
                   if(DateNaissance != null)   datenaissance = new java.sql.Date(sdf.parse(DateNaissance).getTime()); 
                   if(DateRecrutement != null)   daterecrutement = new java.sql.Date(sdf.parse(DateRecrutement).getTime()); 
                   if(DateRetraite != null)   dateretraite = new java.sql.Date(sdf.parse(DateRetraite).getTime()); 
                   if(CertificatMed != null)   certificatmed = new java.sql.Date(sdf.parse(CertificatMed).getTime());
                   if(DateQualif1 != null)   datequalif1 = new java.sql.Date(sdf.parse(DateQualif1).getTime());
                   if(Control != null)   control = new java.sql.Date(sdf.parse(Control).getTime()); 
                   if(Immersion != null)   immersion = new java.sql.Date(sdf.parse(Immersion).getTime()); 
                   if(Perfectionnement != null)   perfectionnement = new java.sql.Date(sdf.parse(Perfectionnement).getTime()); 
     
                   // Initialisation Niveau Anglais
                   if(Niveau != null)   nivo = Integer.parseInt(Niveau);
     
                   // Initialisation Niveau Anglais
                   if(NumFormation != null)     numform = Integer.parseInt(NumFormation);
                   PreparedStatement pstmt = con.prepareStatement(reqInsert);
                   pstmt.setString(1, Matricule);
                   pstmt.setDate(2, certificatmed);
                   pstmt.setDate(3, datequalif1);
                   pstmt.setString(4, NomAgent); 
                   pstmt.setString(5, PrenomAgent);
                   pstmt.setString(6, Sexe);
                   pstmt.setDate(7, datenaissance);
                   pstmt.setString(8, Nationalite);
                   pstmt.setString(9, Fonction);
                   pstmt.setDate(10, daterecrutement);
                   pstmt.setInt(11, nivo);
                   pstmt.setDate(12, dateretraite);
                   pstmt.setInt(13, numform);
                   pstmt.setDate(14, controlcompetence);
                   pstmt.setDate(15, immersionanglais);
                   pstmt.setDate(16, perfectionnement);
                   pstmt.execute();
     
                 con.commit();
     
            }// Fin InsertControleur
    la page jsp
    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
    43
    44
    45
     
    ...
    	String Matricule = request.getParameter("matricule");
    	String Nom = request.getParameter("nomagent");
    	String Prenom = request.getParameter("prenomagent");
    	String Sexe = request.getParameter("sexe");
    	String DateNaissance = request.getParameter("datenaissance");
    	String Nationalite = request.getParameter("nationalite");
    	String Fonction = request.getParameter("fontion");
    	String DateRecrutement = request.getParameter("daterecrutement");
    	String Niveau = request.getParameter("niveauanglais");
    	String CertificatMed = request.getParameter("datecertifmed");
    	String DateQualif1 = request.getParameter("datequalif1");
    	String DateRetraite = request.getParameter("dateretraite");
     
            //Données de la formation initiale
            String FormInit = request.getParameter("forminit");
            String Diplome = request.getParameter("diplome");
    	String DateDiplome = request.getParameter("datediplome");
    	String LieuFormation = request.getParameter("lieuformation");
    	String Etablissement = request.getParameter("etablissement");
     
            //Données de la formation continue
            String Controle = request.getParameter("control");
    	String StagePerfect = request.getParameter("stageperfect");
    	String Immersion = request.getParameter("immersion");
     
     
    	// Requêtes d'insertion
    String NumForm;
            if(FormInit.equals(""))
            {
                fi.InsertFormationInitiale(Diplome, LieuFormation, DateDiplome, Etablissement);
                rs = stat.executeQuery("SELECT NUMFORMATION FROM FORMATIONINITIALE WHERE DIPLOME = "+Diplome);
                rs.next();
     
                NumForm = rs.getString("NUMFORMATION");
            }
            else
                NumForm = FormInit;
     
     
                 co.InsertControleur(Matricule, CertificatMed, DateQualif1, Nom, Prenom, Sexe, DateNaissance, Nationalite, Fonction, 
                                DateRecrutement, Niveau, NumForm, DateRetraite, ControleCompetence, ImmersionAnglais, StagePerfect );
    ...
    à l'execution j'ai cette erreur

    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
     
    javax.servlet.ServletException: ORA-00904: "PERFECTIONNEMENT" : identificateur non valide
     
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    	org.apache.jsp.ajoutagentvalid_jsp._jspService(ajoutagentvalid_jsp.java:204)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
     
     
    cause mère 
     
    java.sql.SQLException: ORA-00904: "PERFECTIONNEMENT" : identificateur non valide
     
    	oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    	oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    	oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    	oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
    	oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
    	oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:946)
    	oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
    	oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1614)
    	oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1579)
    	gestionformation.Controleur.InsertControleur(Controleur.java:193)
    	org.apache.jsp.ajoutagentvalid_jsp._jspService(ajoutagentvalid_jsp.java:175)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
    Je ne comprend pas pourquoi et ça me bloque considerablement dans mon travaille!! quelequ'un peut il m'aider??

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    Je ne sais pas si cela peux jouer, mais en lisant ton post, je vois que la coloration syntaxique est bizarre sur ton create table, pourtant perfectionnement n'est pas un mot réservé
    As tu essayé de renommé ta colonne, juste pour voir ?

    peut être une piste...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 38
    Points
    38
    Par défaut
    Oui j'ai renomé le champs au depat c'etait DATEPERFECTIONNEMENT, je me sui dit que c'est peut etre un mot reservé donc j'ai mis PERFECTIONNEMENT et ça fait la meme erreur!!

  4. #4
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Ok, mais ça vallait le coup d'essayer...
    est ce que l'insert (en java) passe sans cette colonne ou non ?
    (ça nous permettra de savoir si cela viens du java ou d'oracle)

    edit : il y a une coquille dans ton code, je ne sais pas si c'est du au copier coller, mais ton script de création de table concerne la table AGENTC alors que dans la commande INSERT tu utilise la table AGENT

  5. #5
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 738
    Points
    1 738
    Par défaut
    Soit effectivement tu insères dans la mauvaise table "agentc" au lieu de "agent", ou bien sinon met en place une trace dans ton programme pour afficher la requête SQL extacte et interprétée (variables remplacées) juste avant qu'elle soit soumise à la base, de toute façon c'est la requête SQL qui est mauvaise vu l'erreur que tu as.
    C'est plus simple d'analyser la requête traduite que de regarder tout le reste du code

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 38
    Points
    38
    Par défaut
    Merci le problème est resolu.
    Bien vue kalyparker effectivement cetai une erreur sur le nom de table!
    Encore merci et bonne journée à vous!!

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

Discussions similaires

  1. ORA-00904 : Identificateur non valide
    Par Alynn dans le forum PL/SQL
    Réponses: 7
    Dernier message: 29/01/2014, 13h32
  2. Réponses: 2
    Dernier message: 10/12/2010, 16h42
  3. erreur ora-00904 identificateur non valide
    Par zed80 dans le forum Oracle
    Réponses: 2
    Dernier message: 05/01/2010, 14h23
  4. Ora-00904 Identificateur non valide ?
    Par DBA_OCP dans le forum Oracle
    Réponses: 1
    Dernier message: 05/06/2009, 17h03
  5. ORA-00904 : identificateur non valide
    Par hotcold dans le forum SQL
    Réponses: 10
    Dernier message: 01/03/2009, 20h20

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