J'essaye d'appeler une procédure stockée contenant des espaces sur un SGBD SQL Server 2000.
Sur la base d'exemple "Northwind", il y a une procédure qui s'appelle "Ten Most Expensive Products".
Lorsque j'essaye de l'appeler via JDBC, j'ai une exception:
Code :
- [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Impossible de trouver la procédure stockée 'TenMostExpensiveProducts'.
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Impossible de trouver la procédure stockée 'TenMostExpensiveProducts'.
- at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
- at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
- at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
- at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
- at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
- at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
- at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
- at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
- at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
- at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
- at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
- at com.microsoft.jdbc.base.BaseStatement.executeInternal(Unknown Source)
- at com.microsoft.jdbc.base.BasePreparedStatement.execute(Unknown Source)
- at com.sqlsphere.api.test.Northwind.Ten_Most_Expensive_Products(Northwind.java:7085)
- at com.sqlsphere.api.test.Main.testNorthwind(Main.java:78)
- at com.sqlsphere.api.test.Main.<init>(Main.java:24)
- at com.sqlsphere.api.test.Main.main(Main.java:94)
|
Et voici le code appelant cette proc:
Code :
- public StoredProcedureResult Ten_Most_Expensive_Products()
- throws SQLException {
- final Connection connection = getConnection();
- final StoredProcedureResult returnValue;
- try {
- CallableStatement callableStatement;
- callableStatement = connection.prepareCall("{?=call Ten Most Expensive Products}" );
- callableStatement.registerOutParameter(1, java.sql.Types.INTEGER);
- callableStatement.execute();
- returnValue = getStoredProcedureResult(callableStatement);
- } finally {
- unlockConnection(connection);
- }//end try
- return returnValue;
- }//end Ten_Most_Expensive_Products
|
Donc apparement le driver Microsft elimine les espaces dans le nom de la procédure... J'ai essayé en mettant le nom de la proc entre crochets comme indiqué dans la doc de TransacSQL mais ca ne change rien.
Est-ce que quelqu'un a deja eu le probleme ?
---------------
Light is right