IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

[Postgres / JDBC] RecordSet et procedures stockées


Sujet :

PostgreSQL

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    314
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 314
    Points : 463
    Points
    463
    Par défaut [Postgres / JDBC] RecordSet et procedures stockées
    Bonjour à vous.
    Je me permes de poster ici car je n'ai toujours pas trouvé de reponses à mes questions.

    Voilà, je developpe une application en JAVA s'appuyant sur une base de données PostgreSQL.

    POur obtenir des données de la base, j'ai crée des procedures stockées qui fonctionnnent tres bien via PGadmin3.
    Ces procedures stockés me retournent des enregistrements de plusieurs colonnes (recordset).

    Le probleme viens de JDBC. Je n'arrive pas à recuperer mon RecordSet via JDBC.

    Voici un exemple de procedure stockée (fonctionnel, rien a été modifié) :

    Code:

    CREATE OR REPLACE FUNCTION getalllibelleconsequence(text)
    RETURNS SETOF consequence_list AS
    $BODY$

    declare
    rl consequence_list%rowtype;
    codeLangue ALIAS FOR $1;
    begin
    FOR rl IN
    SELECT
    id_consequence,libelle_consequence,id_lib_consequence
    FROM
    lib_consequence
    WHERE
    code_langue=codeLangue
    LOOP

    RETURN NEXT rl;
    END LOOP;
    RETURN;
    end
    $BODY$
    LANGUAGE 'plpgsql' VOLATILE;



    lorsque je fais en mode console :
    Code:
    select * from getalllibelleconsequence('FR');

    Postgres me retourne bien mon recordset (ici, 8 enregistrements de 3 colonnes)

    consequence_list a été correctement defini en amont.

    Voici le code java associé :


    Code:

    conn.setAutoCommit(false);
    CallableStatement cstmt = conn.prepareCall("{?= call GetAllLibelleConsequence ( ? ) }");
    cstmt.registerOutParameter(1, Types.OTHER);
    cstmt.setString(2, "FR");

    cstmt.execute();
    rs = (ResultSet)cstmt.getObject(1);
    while(rs.next())
    System.out.println(rs.getString("libelle_consequence"));

    rs.close();
    cstmt.close();
    stmt.close();



    En message d'erreur (sous eclipse), j'obtiens :

    Code:

    A CallableStatement Function was executed and the return was of type (java.sql.Types=4) however type=java.sql.Types=1111 was registered.


    J'ai pourtant suivi la doc.
    J'en deduis que le type en sortie n'est pas bon.
    Effectivement, postgres me retourne un INTEGER (au lieu de mon recordset).
    Je veux juste un record set, pas un interger (ici = 1, vas savoir pourquoi charles ...)
    Je ne trouve aucune doc clair à ce sujet.
    Le bouquin d'Oreilly est totalement muet à ce propos (c'est rare pour un Oreilly) ...

    Help

    Merci d'avance.[/i]

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    AMHA tu devrais utiliser un simple Statement plutôt qu'un CallableStatement ; je ne suis pas sûr que les SRF (Set Returning Functions) de Postgres soient totalement assimilables à des procédures stockées au sens de JDBC. Dans ce Statement, utilise ta requête "select * from getalllibelleconsequence('FR')".
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. procedure stockés avec spring, jdbc
    Par negro dans le forum Autres Solutions d'entreprise
    Réponses: 0
    Dernier message: 06/08/2009, 11h17
  2. [JDBC] JDBC et procedure stockées
    Par rach375 dans le forum JDBC
    Réponses: 4
    Dernier message: 10/07/2006, 11h44
  3. procedure stockée champ date
    Par tripper.dim dans le forum SQL
    Réponses: 5
    Dernier message: 25/04/2003, 09h47
  4. Appel a une procedure stockée en vba
    Par The_Nail dans le forum VBA Access
    Réponses: 36
    Dernier message: 01/04/2003, 16h44
  5. procedure stockée dans un dbbatch
    Par pram dans le forum XMLRAD
    Réponses: 4
    Dernier message: 07/02/2003, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo