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)
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 Type Tab1 Is Table Of VarChar2 Index By Binary_Integer; /* Declaration des procedures */ Procedure TEST( ParamIn1 In VarChar2, T_ParamOut1 Out Tab1, );
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
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) { }
Pouvez-vous m'aider sur ce point svp ? Merci.
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(); } [...] }
Partager