Vous n'êtes pas identifié(e).

#1 25/10/2011 15:31:35

guk92
Membre

Retourner plusieurs lignes d'une table grace à une procédure stocké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 sad


Je vous remercie pour votre aide. smile

Hors ligne

#2 25/10/2011 16:01:01

rjuju
Administrateur

Re : Retourner plusieurs lignes d'une table grace à une procédure stockée

Oui c'est possible, mais il ne faut pas passer par des paramètres retour mais par un RETURN SETOF record

Hors ligne

#3 29/10/2011 12:56:06

guk92
Membre

Re : Retourner plusieurs lignes d'une table grace à une procédure stockée

Oui, mais je pense avoir trouvé mieux ici.
La solution RETRUN SETOF est trop lourde à mettre en place.

Je te remercie !

Hors ligne

Pied de page des forums