Vous n'êtes pas identifié(e).
Bonjour,
J'ai voulu créer un programme de test dans lequel j'affiche le contenu de ma table en utilisant une procédure stockée, le problème est que je ne reçois qu'une seule ligne sur les 200 de ma table !
Voici mon code Java :
System.out.println("---Début test---");
CallableStatement call = con.prepareCall("{call p_maProcedureT1()}");
call.execute();
ResultSet resultat = call.getResultSet();
while(resultat.next()){
System.out.println("Colonne 1 : " + resultat.getInt(1) + " Colonne 2 : "+ resultat.getInt(2));
}
resultat.close();
call.close();
System.out.println("---Fin test---");
Voici l'affichage console :
---Début test---
Colonne 1 : 176 Colonne 2 : 1
---Fin test---
Je me suis rendu compte qu'en ajoutant un ORDER BY id à ma procédure que je recevais la première ligne de la table, mais ça s'arrête là, je ne reçois qu'une seule ligne sur les 200 de ma table.
Voici ma procédure PL/pgSQL :
CREATE FUNCTION p_maproceduret1(out identifiant integer, out valeur integer)
AS
$BODY$
BEGIN
SELECT id, vala INTO identifiant, valeur FROM t1 ORDER BY id;
END;
$BODY$
LANGUAGE plpgsql;
Je me sers de variable en mode OUT pour récupérer mes résultats et sans mettre les "?" dans :
CallableStatement call = con.prepareCall("{call p_maProcedureT1()}");
Je sais que ça paraît bizarre mais ça fonctionne et je n'ai pas réussis à faire autrement bien que j'ai suivi le tutoriel Callable Statement.
1. Peut-on retourner plusieurs lignes d'une table à partir d'une procédure stockée ?
2. D'où pourrait venir mon problème ? (coté Java ou PostgreSQL)
3. Est-ce que je me suis trompé dans la syntaxe ?
4. Pourriez-vous me montrer un exemple simple pour l'affichage de mes 2 colonnes avec une procédure ?
Je ne sais plus trop quoi faire, je suis sur ce problème depuis plusieurs jours
Je vous remercie pour votre aide.
Hors ligne
Oui c'est possible, mais il ne faut pas passer par des paramètres retour mais par un RETURN SETOF record
Julien.
https://rjuju.github.io/
Hors ligne