Bonjour,

J'utilise une base de données Oracle 10g, avec le dernier driver jdbc (ojdbc14).
Dans ma base de données j'ai crée un procedure stockée.

J'ai crée un programme en java qui se connecte a la base de données puis envoie les variables a ma procédure stockée à l'aide de la classe CallableStatement, dans mon cas 3 variables :
Voici donc le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
		  String procedure= "{? = call fct(?,?,?)}";
 
		    CallableStatement call = connexion.prepareCall();
 
		    call.registerOutParameter(1, java.sql.Types.VARCHAR);
		    call.setString(2, _chaine1);
		    call.setString(3, _chaine2);
		    call.setString(4, _chaine3);
 
	            boolean retour = call.execute();
Mon programme fonctionne correctement, cependant lorsque une des variables est trop volumineuse le programme sort l'exception

java.sql.SQLException: setString ne peut traiter que les chaînes de moins de 32 766 caractères

En effet je veux envoyer un fichier à ma procedure stockée, cependant il est apparament impossible d'envoie ce fichier grâce a la méthode setString().

J'ai donc tenté d'envoyer le fichier sous forme de BLOB à ma procédure stockée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
		  String procedure= "{? = call fct(?,?,?)}";
 
		    CallableStatement call = connexion.prepareCall();
 
		    call.registerOutParameter(1, java.sql.Types.VARCHAR);
		    call.setString(2, _chaine1);
		    call.setString(3, _chaine2);
                    call.setBinaryStream(4, _fichier, _taillefichier);
 
	            boolean retour = call.execute();
Cependant je bute sur l'exception :

java.sql.SQLException: La taille des données est supérieure à la taille max. pour ce type: 1748080

Mon fichier fesant bien 1748080 octets.

Donc la question est comment peut on envoyer des fichiers à une procédure stockée ??

Merci pour votre aide