Bonjour,

J'essaie d'appeler avec Spring une procédure stockée dont les paramètres de sorties sont des Index-by tables (définition ci-dessous)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Type Tab1 Is Table Of VarChar2 Index By Binary_Integer;
 
/* Declaration des procedures */
Procedure TEST(
   ParamIn1  In  VarChar2,
   T_ParamOut1  Out Tab1,
       );
J'arrive à appeler cette procédure en JDBC sans passer par Spring via la code ci-dessous :

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
// Stored procedure call
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
 
			Connection con = DriverManager.getConnection(
					"jdbc:oracle:thin:@127.0.0.1:1521:DEV9I", "******",
					"******");
 
			String command = "{call Toto.TEST(?,?)}";
 
			OracleCallableStatement cstmt = (OracleCallableStatement) con.prepareCall(command);
 
			cstmt.setString(1, "test");
			cstmt.registerIndexTableOutParameter(2, 100, Types.VARCHAR, 250);
			cstmt.execute();
 
		} catch (Exception e) {
		}
J'essaie maintenant d'appeler cette procédure en passant par Spring mais je ne vois pas comment déclarer le paramètre de sortie.

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
public class TESTStoredProcedureImpl extends StoredProcedure {
	private static final String STORED_PROC_NAME = "Toto.TEST";
 
public TESTStoredProcedureImpl(DataSource ds) {
        super(ds, STORED_PROC_NAME);
        declareParameter(new SqlParameter("ParamIn1", Types.VARCHAR));
 
        /* ????????  */
 
        compile();
    }
 
[...]
 
}
Pouvez-vous m'aider sur ce point svp ? Merci.