[PL/SQL] Postgres et JDBC

Postgres et JDBC [PL/SQL] - SQL/NoSQL - Programmation

Marsh Posté le 07-12-2005 à 11:46:57    

Bonjour,
 
j'ai un petit soucis.
J'utilise pour la première fois des appels à une procédure stockée de PostgreSQL.
 
Celle-ci retourne un résultat de type Custom; ce dernier étant défini dans PostgreSQL.
 
 
Ma question : Comment je fais pour récupérer les données de retour ???
 
 
 

Code :
  1. CREATE OR REPLACE FUNCTION GET_CONFIG()
  2. RETURNS return_config AS
  3. $BODY$
  4. DECLARE
  5. Res return_config;
  6. BEGIN
  7. Res.RETURN_VALUE = 0;
  8. return  Res;
  9. END;
  10. $BODY$
  11.   LANGUAGE 'plpgsql' VOLATILE;
  12. /**********************************************/
  13. CREATE TYPE return_config AS
  14.    (p_server_port int4,
  15.     p_automatic int4,
  16.     return_value int4);
  17. /************************************************/
  18. // Procedure call.
  19. CallableStatement proc = conn.prepareCall("{ ? = call get_config() }" );
  20. proc.registerOutParameter(1, Types.OTHER);
  21. proc.execute();
  22. ResultSet rset = (ResultSet) proc.getObject(1);


 
 
Le morceau de code JAVA ne me permet pas de récupérer les données.
J'ai une exception ClassCast (normal après tout). Mais je ne sais pas comment récupérer les données...
 
Dois-je implémenter une classe de donnée implémentant SQLData, correspondant à Type de retour PostgreSQL ?
 
 
 
 
Merci pour votre aide.


Message édité par bolomatic le 07-12-2005 à 11:52:58
Reply

Marsh Posté le 07-12-2005 à 11:46:57   

Reply

Marsh Posté le 07-12-2005 à 19:32:15    

les procédures stockées et JDBC c'est vraiment pas top! j'ai pu y touché il y a quelques temps, et dés qu'on veut retourner qqch, ça fais chier si ce type n'est pas normaliser :(
 
tu n'as pas trouvé un exemple pour Postgre?
 
juste pour infos, le PL/SQL est un language propriétaire d'oracle... je ne sais pas comment ils l'ont appelé chez PostGre

Reply

Marsh Posté le 07-12-2005 à 21:02:58    

Il l'ont appelé plpgsql je crois.
 
Sinon, la solution que j'ai trouvé pour les valeurs de retour c'est de récupérer l'objet et le caster en <PGobject>. De là, je fais une méthode qui "split" le string retourné par la méthode getValue().
 
Heureusement, je n'ai besoin de récupérer que des entiers, donc un petit ParseInt et c'est réglé.
 
 
Bon, c'est bricolage mais bon, j'ai rien trouvé du tout pour l'utilisation des types personnalisés.
 
J'avais une piste avec SQLData, qui permet de définir des types personnalisés pour JDBC, mais je ne sais pas si je les utilise bien; en tout cas, je ne peux pas caster les objets retournés, avec une classe implémentant SQLData.
 
Voilou !


---------------
Feedback (avant 2011)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed