Erreur Requete SQL dans un programme JAVA

Mic06 Messages postés 4 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 2 mars 2012 - 1 mars 2012 à 15:31
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 2 mars 2012 à 09:19
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 ?
A voir également:

3 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 370
1 mars 2012 à 15:52
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 ("
2
Rejoignez-nous