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

  FORUM HardWare.fr
  Programmation
  Java

  Exécution procédure stockée sur Sybase en Java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Exécution procédure stockée sur Sybase en Java

n°1396347
rat dgout
Posté le 28-06-2006 à 10:46:34  profilanswer
 

:hello:  
 
Voilà, j'ai un petit problème pour éxécuter une procédure stockée avec une base Sybase et JDBC.
 
Voici le corps de ma procédure stockée :

Code :
  1. create proc ps_part_composite_firme (@CodFirme varchar(50) = 'F12', @IdLangue int = 2)
  2. as
  3. begin
  4. if (@IdLangue = 1)
  5.  begin
  6.   SELECT COD_COMP AS CODE_COMPOSITE, LIB_COMP AS LIB_COMPOSITE,
  7.    convert(char(8), DAT_OUV, 112) AS DATE_OUV,
  8.    convert(char(8), DAT_CLO, 112) AS DATE_CLO
  9.           FROM E_COMPOSITE
  10.           WHERE COD_FIRM = @CodFirme
  11.           ORDER BY LIB_COMP
  12.  end
  13. else
  14.  begin
  15.   SELECT COD_COMP AS CODE_COMPOSITE, LIB_REPORT AS LIB_COMPOSITE,
  16.    convert(char(8), DAT_OUV, 112) AS DATE_OUV,
  17.    convert(char(8), DAT_CLO, 112) AS DATE_CLO
  18.           FROM E_COMPOSITE
  19.           WHERE COD_FIRM = @CodFirme
  20.           ORDER BY LIB_REPORT
  21.  end
  22. end


La procédure stockée fonctionne bien et a été testée. Elle prend donc en paramètre un String (CodFirme) et un Integer (IdLang).
Maintenant je veux récupérer l'affichage qu'elle génère avec son SELECT dans ma classe java. Pour cela, j'ai créé une méthode :

Code :
  1. try {
  2. SybStatement syb_stmt = (SybStatement)this.conn.createStatement();
  3. syb_stmt.setFetchSize(200);
  4. String query = "{call ps_part_composite_firme [(?, ?)]}";
  5. SybCallableStatement call = (SybCallableStatement)this.conn.prepareCall(query);
  6.    
  7. call.setString("CodFirme",CodFirme);
  8. call.setInt("IdLangue",langue);
  9.    
  10. SybCursorResultSet syb_rs = (SybCursorResultSet)call.executeQuery();
  11. }
  12. catch (SQLException se) { System.out.println(se.getMessage(); }
  13. catch (Exception e) { System.out.println("Autre erreur" ); }


J'ai l'erreur SQL suivante : There is no host variable corresponding to the one specified by the PARAM datastream. This means that this variable 'CodFirme' was not used in the preceding DECLARE CURSOR or SQL command.
 
Or pourtant cette variable est bien déclarée dans ma procédure stockée ! (cf. le code de la procédure).
J'ai essayé de remplacer les lignes 8. et 9. du programme Java par :

Code :
  1. call.setString(1,CodFirme);
  2. call.setInt(2,langue);


Ca ne marche pas mieux, j'ai alors l'erreur suivante : There is no host variable corresponding to the one specified by the PARAM datastream. This means that this variable '' was not used in the preceding DECLARE CURSOR or SQL command.
 
Quelqu'un a une idée ? Mon code Java est bon ?
Merci d'avance


Message édité par rat dgout le 28-06-2006 à 11:16:24
mood
Publicité
Posté le 28-06-2006 à 10:46:34  profilanswer
 

n°1396361
brisssou
8-/
Posté le 28-06-2006 à 10:58:09  profilanswer
 

le fait que tu mettes des valeurs par défaut, ça déclare pas des constantes du coup ? enfin j'en sais rien....


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1396368
rat dgout
Posté le 28-06-2006 à 11:03:35  profilanswer
 

Normalement non...
Mais je vais essayer de retirer ces valeurs par défaut quand même...

n°1396599
rat dgout
Posté le 28-06-2006 à 14:42:03  profilanswer
 

Bon, ça ne marche pas non plus en retirant les valeurs par défaut.  :pt1cable:  
Quelqu'un a une autre idée ?  :D

n°1396614
brisssou
8-/
Posté le 28-06-2006 à 15:05:36  profilanswer
 

y a pas des chouettes exemples chez sybase ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1396666
rat dgout
Posté le 28-06-2006 à 16:17:57  profilanswer
 

brisssou a écrit :

y a pas des chouettes exemples chez sybase ?


Bonne idée, je vais fouiller dans ce coin là...

n°1396670
brisssou
8-/
Posté le 28-06-2006 à 16:19:42  profilanswer
 

[:le kneu] à quand même...


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1397052
nerisson
Pic-pic
Posté le 29-06-2006 à 10:52:57  profilanswer
 

1) Pourquoi est-ce que tu utilises directement les classes Sybase pour executer ta proc ?
Tu devrait plutot utiliser les classes / interfaces JDBC parce que la tu ne sait pas si tu utilises les bonnes classes ni si elles sont bien initialisées
 
2) Essaye avec ca comme requete:

Code :
  1. String query = "{call ps_part_composite_firme ?, ?}";


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

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

  Exécution procédure stockée sur Sybase en Java

 

Sujets relatifs
[java & c++] communication Java ,<=> c++[java] Mécanisme de timout simple
Appli java et outils propriosprobléme pour éxécuter un fichier java
Récupération d'applet java ?Problème avec une petite application RMI en java
Problème d&#8217;écriture dans un fichier avec Java (Applet)chat sous java
procedure trop longue résoluexecution programme python
Plus de sujets relatifs à : Exécution procédure stockée sur Sybase en Java


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