Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1990 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java-SQLServer] Appeler une procédure stockée contenant des espaces

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java-SQLServer] Appeler une procédure stockée contenant des espaces

n°755893
nerisson
Pic-pic
Posté le 08-06-2004 à 10:18:24  profilanswer
 

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 :
  1. [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Impossible de trouver la procédure stockée 'TenMostExpensiveProducts'.
  2. java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Impossible de trouver la procédure stockée 'TenMostExpensiveProducts'.
  3. at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
  4. at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
  5. at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
  6. at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
  7. at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
  8. at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
  9. at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
  10. at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
  11. at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
  12. at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
  13. at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
  14. at com.microsoft.jdbc.base.BaseStatement.executeInternal(Unknown Source)
  15. at com.microsoft.jdbc.base.BasePreparedStatement.execute(Unknown Source)
  16. at com.sqlsphere.api.test.Northwind.Ten_Most_Expensive_Products(Northwind.java:7085)
  17. at com.sqlsphere.api.test.Main.testNorthwind(Main.java:78)
  18. at com.sqlsphere.api.test.Main.<init>(Main.java:24)
  19. at com.sqlsphere.api.test.Main.main(Main.java:94)


Et voici le code appelant cette proc:

Code :
  1. public StoredProcedureResult Ten_Most_Expensive_Products()
  2.          throws SQLException {
  3.     final Connection connection = getConnection();
  4.     final StoredProcedureResult returnValue;
  5.     try {
  6.       CallableStatement callableStatement;
  7.       callableStatement = connection.prepareCall("{?=call Ten Most Expensive Products}" );
  8.       callableStatement.registerOutParameter(1, java.sql.Types.INTEGER);
  9.       callableStatement.execute();
  10.       returnValue = getStoredProcedureResult(callableStatement);
  11.     } finally {
  12.       unlockConnection(connection);
  13.     }//end try
  14.     return returnValue;
  15.   }//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
mood
Publicité
Posté le 08-06-2004 à 10:18:24  profilanswer
 

n°755903
Mara's dad
Yes I can !
Posté le 08-06-2004 à 10:22:42  profilanswer
 

Et les simples quotes ?
 
callableStatement = connection.prepareCall("{?=call 'Ten Most Expensive Products'}" );


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°755915
nerisson
Pic-pic
Posté le 08-06-2004 à 10:27:31  profilanswer
 

Nan ca ne marche pas, cette fois ci j'ai:

Code :
  1. [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Ligne 1 : syntaxe incorrecte vers 'TenMostExpensiveProducts'.


 
je trouve rien sur MSDN en plus  :??:


Message édité par nerisson le 08-06-2004 à 10:27:41

---------------
Light is right
n°756084
nerisson
Pic-pic
Posté le 08-06-2004 à 11:41:15  profilanswer
 

Aprés avoir décompilé le driver Microsoft  :D et avoir fait un tour sur les forums de java.sun.com j'ai trouvé la soluce.
Il faut mettre le nom de la procédure entre guillimets, comme ca:

Code :
  1. callableStatement = connection.prepareCall("{?=call \"Ten Most Expensive Products\" }" );


---------------
Light is right

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java-SQLServer] Appeler une procédure stockée contenant des espaces

 

Sujets relatifs
[Java] Isoler proprement un motif dans une StringCommandes pour executer une procédure sql à partir de php
Java-Oracle et JSp besoin d'aide [RESOLU][J2ME] Lancement du navigateur Palm depuis JAVA
[java] Vous préfixez vos variables pour en déterminer la portée?[Java] JEditorPane : pourquoi "white-space:nowrap;" laisse une ligne b
curseur et procedureQUEL EST LE MEILLEUR CHOIX d'AGL ORIENTE JAVA ?
je n'arrive plus à exécuter un javajava et commandes du système
Plus de sujets relatifs à : [Java-SQLServer] Appeler une procédure stockée contenant des espaces


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR