Executer une requets pour BD ORACLE et JDBC

Résolu
djanahana Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   -  
djanahana Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'aimerai bien que vous m'aide
j'ai un programme java et je veux execute la commande

EXECUTE DBMS_STATS.gather_table_stats('nom_utilsateur', 'nom-table'); 


pour collecter les statistique sur la table "nom_table"

ma question est comment je peux exécuter cette commande a travers une instruction dans mon programme java

j'ai trouver callstatement ,preparestatemet ais prepare statemet est présenter comme erreur dans eclipse ,vramient je ne sias pas :(

(sachant que j'ai deja executer des requêtes SQL simple dans mon programme java et ca marche tres bien )

2 réponses

OlivrT Messages postés 323 Date d'inscription   Statut Membre Dernière intervention   36
 
Bonjour,
DBMS_STATS est "interne" si je peux dire à Oracle.
Mais il y a un moyen pour le contourner.
Créer une procédure stockée dans laquelle se trouvera la commande en question.
Appelez votre procédure depuis votre programme Java et le tour est joué ;-)
2
djanahana Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   13
 
merci ,j'ai trouve la solution ,je veux utilise cette fonction qui inclus deja une execution de cette requet avec JDBC


public static void refresh(String nom_table) throws SQLException{
		
		CallableStatement stmt=null;
		CallableStatement stmt2=null;
			//String var_table="'"+nom_table+"'";
			
		String var_table="'"+nom_table+"'";
			//il y a avis un probleme de commit apres insertion 
			try{
			stmt= connection.prepareCall("begin  DBMS_STATS.gather_table_stats('system',"+var_table+");commit;end;");
			
		        stmt.execute();
		        
		        
		        stmt2= connection.prepareCall("begin commit; end;");
		        stmt2.execute();
		        System.out.println("commit");
			}
			 catch (SQLException e) {
				}
		}



merci
0