Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/04/2007, 15h20   #1
Membre actif
 
Avatar de Vikisme
 
Homme François
Développeur Java
Inscription : avril 2007
Messages : 162
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : avril 2007
Messages : 162
Points : 179
Points : 179
Par défaut [JDBC]Result set d'une procédure stockée

Bonjours,
Mon problème est le suivant :
Je souhaiterais faire une procédure stockée avec MySQL 5.0 qui me renvoit le résultat d'une requête de type SELECT que je puisse utiliser sous Java avec un ResultSet.

Après quelques recherches, j'ai trouvé ceci, mais c'est pour Oracle, la solution proposée me conviendrait bien mais encore faudrait-il que je sache comment ajouter un type avec MySQL...

Citation:
Envoyé par Beuss
Il faut que tu utilises un nouveau type (TYPE RecordSet IS REF CURSOR) et que ta fonction retourne une valeur de ce type. Ensuite la syntaxe est la même que d'habitude (pour le nouveau type tu dois etre dans un package)
Vikisme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 15h55   #2
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
CREATE PROCEDURE ....

BEGIN

DECLARE v_cur_done INT;
DECLARE variable1 VARCHAR(80);
DECLARE variable2 VARCHAR(80);
....
....



DECLARE cursor_of_my_table CURSOR FOR 
  SELECT  ...
  FROM    ...
  WHERE   ...;

-- Gestion de l erreur fin de curseur 
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' 
    SET v_cur_done = 1;


OPEN cursor_of_my_table

FETCH cursor_of_my_table
   INTO variable1, variable2, ....

WHILE NOT v_cur_done DO

fait ce que tu veux ici

FETCH cursor_of_my_table
   INTO variable1, variable2, ....

END WHILE;


CLOSE cursor_of_my_table

COMMIT;
END;
c'est un truc de ce genre que tu veux ?
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 16h14   #3
Membre actif
 
Avatar de Vikisme
 
Homme François
Développeur Java
Inscription : avril 2007
Messages : 162
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : avril 2007
Messages : 162
Points : 179
Points : 179
Non ce que je voudrais c'est renvoyer le curseur pour pouvoir l'utiliser dans mon programme Java...

Actuellement j'execute directement la requête dans le code Java mais je voudrais plutôt faire appel à une procédure stockée pour obtenir les données, mais les traitements que j'ai à effectuer doivent être fait dans mon code java, donc j'aurais besoin de pouvoir récupérer un ResultSet (donc un curseur)...
Je sais pas si je suis assez clair...
Vikisme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 16h53   #4
Membre actif
 
Avatar de Vikisme
 
Homme François
Développeur Java
Inscription : avril 2007
Messages : 162
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : avril 2007
Messages : 162
Points : 179
Points : 179
En fait j'me suis fais chié pour rien, suffit d'executer la requête dans la procédure dans le genre
Code :
1
2
3
4
CREATE DEFINER=`root`@`localhost` PROCEDURE `fonction`()
BEGIN
  SELECT * FROM commune;
END
Vikisme est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h52.


 
 
 
 
Partenaires

Hébergement Web