Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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 05/06/2007, 16h02   #1
Invité de passage
 
Inscription : mars 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 15
Points : 2
Points : 2
Par défaut Procédure stockée et ensemble de resultat

Bonjour,

Je débute en DB2 et je me demande s'il est possible qu'une procédure stockée puisse renvoyer un ensemble de résultat.

si oui un exemple serai le bienvenue.

je pense faire une procedure simple qui me retournerai des résultats comme

Code :
1
2
3
 
  SELECT * FROM CLIENTS
  WHERE ID_CLI > 99
Merci
rxseac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 17h01   #2
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
Oui sans problème. Tu dois utiliser un curseur.

Désolé, je n'ai pas d'exemple sous la main.
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 17h04   #3
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
Après une rapide recherche, j'ai trouvé un exemple. Regarde le listing 3.

http://www.ibm.com/developerworks/lo...B2-procedures/
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 07h58   #4
Invité de passage
 
Inscription : mars 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 15
Points : 2
Points : 2
Super c'est ce que je cherchais.

Merci.
rxseac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 08h11   #5
Invité de passage
 
Inscription : mars 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 15
Points : 2
Points : 2
Bonjour,

point 1:

Dans cette procédure :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE PROCEDURE DB2ADMIN.GET_EMPLOYEE_NAME (IN EMPID INT)
RESULT SETS 1
LANGUAGE SQL
 
P1: BEGIN
DECLARE EMPID_VAL INT;
DECLARE cursor1 CURSOR WITH RETURN FOR      
  SELECT FNAME,LNAME FROM DB2ADMIN.EMPLOYEES
  WHERE DB2ADMIN.EMPLOYEES.EMPID = EMPID_VAL;  
 
SET EMPID_VAL = EMPID;      
 
OPEN cursor1;       <--- ici on ouvre le curseur
END P1
On ouvre le curseur OK, mais quand et comment doit on le fermer ?


point 2

Ce code est-il compatible sur DB2400?
Car ma base est sur un serveur AS400

Merci
rxseac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 09h04   #6
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
Citation:
Envoyé par rxseac
point 1:

Dans cette procédure :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE PROCEDURE DB2ADMIN.GET_EMPLOYEE_NAME (IN EMPID INT)
RESULT SETS 1
LANGUAGE SQL
 
P1: BEGIN
DECLARE EMPID_VAL INT;
DECLARE cursor1 CURSOR WITH RETURN FOR      
  SELECT FNAME,LNAME FROM DB2ADMIN.EMPLOYEES
  WHERE DB2ADMIN.EMPLOYEES.EMPID = EMPID_VAL;  
 
SET EMPID_VAL = EMPID;      
 
OPEN cursor1;       <--- ici on ouvre le curseur
END P1
On ouvre le curseur OK, mais quand et comment doit on le fermer ?
Pour fermer un curseur, il existe la commande SQL Close Cursor ou SQLCloseCursor depuis la CLI (ODBC/OLEDB).
Mais tu peux aussi faire plus avec SQLFreeStmt() .

sinon au pire il sera fermé lors de la fermeture de la connection.

Citation:
Envoyé par rxseac
point 2

Ce code est-il compatible sur DB2400?
Car ma base est sur un serveur AS400
Je ne connais pas vraiment l'AS400 mais je pense bien que oui. Il s'agit de SQL standard DB2. Tu peux trouver un exemple spécific AS400 en RPG avec un client ODBC sur cette page
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 09h14   #7
Invité de passage
 
Inscription : mars 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 15
Points : 2
Points : 2
Merci pour ces informations fort intéressantes.
rxseac est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h57.


 
 
 
 
Partenaires

Hébergement Web