Erreur Requete SQL dans un programme JAVA

Signaler
Messages postés
4
Date d'inscription
mercredi 9 juin 2010
Statut
Membre
Dernière intervention
2 mars 2012
-
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
-
Bonjour

Je cherche à accéder à certaines données de ma BD Oracle via cette requette :


String sql = 
        
        		"SELECT ''SDP'' AS CSCIName, STATUS_COUNTER.Status_Count AS Status_Count, FREMM_INDICATEURS.FREMM_STATUS.StatusName AS CSCIStatus"+
                		"FROM FREMM_INDICATEURS.FREMM_STATUS LEFT JOIN ("+
                				"SELECT ''SDP'' AS CSCIName, COUNT(FREMM_SDP_20110329_DB.STEP.ST_STATUS) AS Status_Count, FREMM_SDP_20110329_DB.STEP.ST_STATUS AS CSCIStatus"+
                				"FROM FREMM_SDP_20110329_DB.STEP"+
                				"WHERE FREMM_SDP_20110329_DB.STEP.ST_RUN_ID IN ("+
                						"SELECT MAX( FREMM_SDP_20110329_DB.RUN.RN_RUN_ID)"+
                						"FROM FREMM_SDP_20110329_DB.CYCLE JOIN  FREMM_SDP_20110329_DB.CYCL_FOLD ON (FREMM_SDP_20110329_DB.CYCLE.CY_CYCLE ''SW2-V6.2.3'' AND FREMM_SDP_20110329_DB.CYCLE.CY_FOLDER_ID FREMM_SDP_20110329_DB.CYCL_FOLD.CF_ITEM_ID)"+
                						"JOIN FREMM_SDP_20110329_DB.RUN ON (FREMM_SDP_20110329_DB.CYCLE.CY_CYCLE_ID = FREMM_SDP_20110329_DB.RUN.RN_CYCLE_ID)"+
                						"GROUP BY(FREMM_SDP_20110329_DB.RUN.RN_TEST_ID)"+
                						")"+
                				"AND FREMM_SDP_20110329_DB.STEP.ST_USER_02 = ''SIF_V6.1''"+
                				"GROUP BY (FREMM_SDP_20110329_DB.STEP.ST_STATUS)"+
                				") STATUS_COUNTER"+
                				"ON (FREMM_INDICATEURS.FREMM_STATUS.StatusName = STATUS_COUNTER.CSCIStatus)"+
                "UNION"+
                "SELECT ''SENCON'' AS CSCIName, STATUS_COUNTER.Status_Count AS Status_Count, FREMM_INDICATEURS.FREMM_STATUS.StatusName AS CSCIStatus"+
                "FROM FREMM_INDICATEURS.FREMM_STATUS LEFT JOIN ("+
                		"SELECT ''SENCON'' AS CSCIName, COUNT(FREMM_SENCON_DB.STEP.ST_STATUS) AS Status_Count, FREMM_SENCON_DB.STEP.ST_STATUS AS CSCIStatus"+
                		"FROM FREMM_SENCON_DB.STEP"+
                		"WHERE FREMM_SENCON_DB.STEP.ST_RUN_ID IN ("+
                				"SELECT MAX( FREMM_SENCON_DB.RUN.RN_RUN_ID)"+
                				"FROM FREMM_SENCON_DB.CYCLE JOIN  FREMM_SENCON_DB.CYCL_FOLD ON (FREMM_SENCON_DB.CYCLE.CY_CYCLE ''SW2-V6.2.3'' AND FREMM_SENCON_DB.CYCLE.CY_FOLDER_ID FREMM_SENCON_DB.CYCL_FOLD.CF_ITEM_ID)"+
                				"JOIN FREMM_SENCON_DB.RUN ON (FREMM_SENCON_DB.CYCLE.CY_CYCLE_ID = FREMM_SENCON_DB.RUN.RN_CYCLE_ID)"+
                				"GROUP BY(FREMM_SENCON_DB.RUN.RN_TEST_ID)"+
                				")"+
                		"AND FREMM_SENCON_DB.STEP.ST_USER_02 = ''SIF_V6.1''"+
                		"GROUP BY (FREMM_SENCON_DB.STEP.ST_STATUS)"+
                		") STATUS_COUNTER"+
                		"ON (FREMM_INDICATEURS.FREMM_STATUS.StatusName = STATUS_COUNTER.CSCIStatus)"+
                "UNION"+
                "SELECT ''NAV'' AS CSCIName, STATUS_COUNTER.Status_Count AS Status_Count, FREMM_INDICATEURS.FREMM_STATUS.StatusName AS CSCIStatus"+
                "FROM FREMM_INDICATEURS.FREMM_STATUS LEFT JOIN ("+
                		"SELECT ''NAV'' AS CSCIName, COUNT(FREMM_NAV_DB.STEP.ST_STATUS) AS Status_Count, FREMM_NAV_DB.STEP.ST_STATUS AS CSCIStatus"+
                		"FROM FREMM_NAV_DB.STEP"+
                		"WHERE FREMM_NAV_DB.STEP.ST_RUN_ID IN ("+
                				"SELECT MAX( FREMM_NAV_DB.RUN.RN_RUN_ID)"+
                				"FROM FREMM_NAV_DB.CYCLE JOIN  FREMM_NAV_DB.CYCL_FOLD ON (FREMM_NAV_DB.CYCLE.CY_CYCLE ''SW2-V6.2.3'' AND FREMM_NAV_DB.CYCLE.CY_FOLDER_ID FREMM_NAV_DB.CYCL_FOLD.CF_ITEM_ID)"+
                				"JOIN FREMM_NAV_DB.RUN ON (FREMM_NAV_DB.CYCLE.CY_CYCLE_ID = FREMM_NAV_DB.RUN.RN_CYCLE_ID)"+
                				"GROUP BY(FREMM_NAV_DB.RUN.RN_TEST_ID)"+
                				")"+
                		"AND FREMM_NAV_DB.STEP.ST_USER_02 = ''SIF_V6.1''"+
                		"GROUP BY (FREMM_NAV_DB.STEP.ST_STATUS)"+
                		") STATUS_COUNTER"+
                		"ON (FREMM_INDICATEURS.FREMM_STATUS.StatusName = STATUS_COUNTER.CSCIStatus)"+
                "UNION"+
                "SELECT ''RID'' AS CSCIName, STATUS_COUNTER.Status_Count AS Status_Count, FREMM_INDICATEURS.FREMM_STATUS.StatusName AS CSCIStatus"+
                "FROM FREMM_INDICATEURS.FREMM_STATUS LEFT JOIN ("+
                		"SELECT ''RID'' AS CSCIName, COUNT(FREMM_RID_DB.STEP.ST_STATUS) AS Status_Count, FREMM_RID_DB.STEP.ST_STATUS AS CSCIStatus"+
                		"FROM FREMM_RID_DB.STEP"+
                		"WHERE FREMM_RID_DB.STEP.ST_RUN_ID IN ("+
                				"SELECT MAX( FREMM_RID_DB.RUN.RN_RUN_ID)"+
                				"FROM FREMM_RID_DB.CYCLE JOIN  FREMM_RID_DB.CYCL_FOLD ON (FREMM_RID_DB.CYCLE.CY_CYCLE ''SW2-V6.2.3'' AND FREMM_RID_DB.CYCLE.CY_FOLDER_ID FREMM_RID_DB.CYCL_FOLD.CF_ITEM_ID)"+
                				"JOIN FREMM_RID_DB.RUN ON (FREMM_RID_DB.CYCLE.CY_CYCLE_ID = FREMM_RID_DB.RUN.RN_CYCLE_ID)"+
                				"GROUP BY(FREMM_RID_DB.RUN.RN_TEST_ID)"+
                				")"+
                		"AND FREMM_RID_DB.STEP.ST_USER_02 = ''SIF_V6.1''"+
                		"GROUP BY (FREMM_RID_DB.STEP.ST_STATUS)"+
                		") STATUS_COUNTER"+
                		"ON (FREMM_INDICATEURS.FREMM_STATUS.StatusName = STATUS_COUNTER.CSCIStatus)"+
                "UNION"+
                "SELECT ''TPM'' AS CSCIName, STATUS_COUNTER.Status_Count AS Status_Count, FREMM_INDICATEURS.FREMM_STATUS.StatusName AS CSCIStatus"+
                "FROM FREMM_INDICATEURS.FREMM_STATUS LEFT JOIN ("+
                		"SELECT ''TPM'' AS CSCIName, COUNT(FREMM_TPM_DB.STEP.ST_STATUS) AS Status_Count, FREMM_TPM_DB.STEP.ST_STATUS AS CSCIStatus"+
                		"FROM FREMM_TPM_DB.STEP"+
                		"WHERE FREMM_TPM_DB.STEP.ST_RUN_ID IN ("+
                				"SELECT MAX( FREMM_TPM_DB.RUN.RN_RUN_ID)"+
                				"FROM FREMM_TPM_DB.CYCLE JOIN  FREMM_TPM_DB.CYCL_FOLD ON (FREMM_TPM_DB.CYCLE.CY_CYCLE ''SW2-V6.2.3'' AND FREMM_TPM_DB.CYCLE.CY_FOLDER_ID FREMM_TPM_DB.CYCL_FOLD.CF_ITEM_ID)"+
                				"JOIN FREMM_TPM_DB.RUN ON (FREMM_TPM_DB.CYCLE.CY_CYCLE_ID = FREMM_TPM_DB.RUN.RN_CYCLE_ID)"+
                				"GROUP BY(FREMM_TPM_DB.RUN.RN_TEST_ID)"+
                				")"+
                		"AND FREMM_TPM_DB.STEP.ST_USER_02 = ''SIF_V6.1''"+
                		"GROUP BY (FREMM_TPM_DB.STEP.ST_STATUS)"+
                		") STATUS_COUNTER"+
                		"ON (FREMM_INDICATEURS.FREMM_STATUS.StatusName = STATUS_COUNTER.CSCIStatus)";



Une requete imposante n'est ce pas ...

Bref, le problème est que cette requette fonctionne sous SQLDeveloper.

J'en deduit donc qu'elle est correcte. Hors lorsque j'execute mon programme JAVA, j'obtiens cette erreur :


java.sql.SQLException: ORA-00923: mot-clé FROM absent à l'emplacement prévu




Qu'en pensez vous ?

3 réponses

Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
260
Bonjour,

Vu la taille de la requete, je ne pensais pas trouver l'erreur mais je l'ai !

 AS CSCIStatus"+"FROM FREMM_INDICATEURS.FREMM_STATUS LEFT JOIN ("


Ca va te donner la requete suivante en réalité :

 AS CSCIStatusFROM FREMM_INDICATEURS.FREMM_STATUS LEFT JOIN (


Donc le mot clé FROM est bien absent puisqu'il est concaténé à CSCIStatus pour former : CSCIStatusFROM

Il faut que tu ajoutes des espaces à la fin de tes lignes :

 AS CSCIStatus "+"FROM FREMM_INDICATEURS.FREMM_STATUS LEFT JOIN ("
Messages postés
4
Date d'inscription
mercredi 9 juin 2010
Statut
Membre
Dernière intervention
2 mars 2012

J'ai honte d'un telle erreure ...
Merci beaucoup ;)
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
260
De rien,

C'est pas la honte, ca ne se voit pas étant donné qu'il n'y a aucune erreur de syntaxe SQL.

Tu peux accepter la réponse stp ?