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 20/03/2007, 16h53   #1
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
Par défaut Utiliser un curseur déjà créé dans une procédure stockée

Plateforme iseries , Language RPG ILE , système DB2400.
1) J'ai créé une procedure stockée (TEST) comme suite :

BEGIN
DECLARE C1 SCROLL CURSOR WITH RETURN TO CLIENT FOR
SELECT F1 . TPNARG AS TPNARG , F1 . TPNVAC AS TPNVAC , F1 .TPNVLO
AS TPNVLO , F1 . TPLLVF AS TPLLVF
FROM D_PRO_F . TVTCATP AS F1
WHERE TPNCLI = 3331 ;

OPEN C1 ;
SET RESULT SETS CURSOR C1 ;
END

2) J'ai un programme RPG de type SQLRPGLE :

C/EXEC SQL
C+ CALL LIB/TEST => Appel de la procédure
stockée
C/END-EXEC
*
C/EXEC SQL
C+ FETCH NEXT FROM C1 INTO :tpnarg, :tpnvac, :tpvnvlo :tpllvf
C/END-EXEC

J'ai 2 problèmes :
a) Si je compile normalement le pgm, erreur car C1 inexistant.
b) si je compile evec code gravité 40 => ok pour la compile
mais à l'exécution idem, il ne veux pas du fetch.

Commant puis-je résoudre ce problème ?
C'est à dire pour pouvoir exploiter le curseur C1
(ouvert dans la procédure stockée) dans mon programme RPG ?
sergioorlando est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 18h55   #2
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Par défaut Sql Cli

Sur l'AS/400-iSeries-i5..., avec un programme de type SQLRPGxx, c'est à dire avec SQL intégré (embedded SQL), tu ne peux récupérer un curseur (RESULT SET) qu'en programmant avec SQL CLI.
Va voir ici sur mon site un exemple complet de récupération des lignes d'une table à partir d'un curseur.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 15h46   #3
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
Quelqu'un peut me donner un exemple d'utilisation d'un SLQDESCRIBECOL
dans un programme RPGLE ?
sergioorlando est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 18h43   #4
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Par défaut Slqdescribecol

Je ne connais pas l'instruction SLQDESCRIBECOL.
Je connais DESCRIBE pour obtenir des infos sur une instruction préparée par PREPARE, mais pas celle que tu cites.
Qu'est censée faire une telle instruction ?
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 09h44   #5
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
sorry, c'est SQLDescribeCol, instruction SCLI CLI
sergioorlando est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 11h12   #6
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Regarde ici
et .

Dans un programme RPG ou autre supportant SQL et où existent des instructions SQL CLI, tu peux sans problème y faire coexister des instructions SQL intégré ( Exec SQL ... /End-Exec).

Mais que cherches-tu donc à faire ?
Programmer le fonction CLI SQLDESCRIBECOL et récupérer le resultset n'est pas chose aisée.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2007, 13h35   #7
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
Par défaut Sqlcli

J'utilise l'instruction sqlbindcol dans mon programme rpg pour récupéré une info
venant de ma procédure stockée comme suite :

if sqlbindcol( hstmt :
20 :
sql_char :
%addr( JREXA3 ) :
%len( JREXA3 ) :
p_lgr_JREXA3 ) < 0
exsr errorrtn
endif

Ceci fonctionne, mais lorsque je veux utiliser la 21 zone de mon curseur, cela pose un problème.
if sqlbindcol( hstmt :
21 :
sql_char :
%addr( JREXA4 ) :
%len( JREXA4 ) :
p_lgr_JREXA4 ) < 0
exsr errorrtn
endif

Qui a une solution ?
sergioorlando 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 05h12.


 
 
 
 
Partenaires

Hébergement Web