«

»

août 20

Imprimer ceci Article

Procédure Stockée SQL sur un RPG

Créer une procédure stockée SQL sur un programme externe

Pourquoi ?

Une procédure stockée SQL est une interface, un point d’accès depuis un système externe vers l’intérieur de l’AS400, c’est un moyen d’utiliser vos programmes RPG existant sans avoir à tout recoder dans un autre langage de programmation.

Vos procédures stockées peuvent être appelées pour un site web (en php ou asp), pour afficher des rapports pour Crystal Report et le résultat peut même être exploité dans Excel (Microsoft) ou Calc (Open Office), …

C’est pas le moyen le plus performant, je vous l’accorde …

Comment créer une Procédure Stockée Externe ?

En SQL

En supposant que votre programme se trouve dans my_lib et que le nom du pgm est : nom_pgm_rpgle et ne prend aucun paramètre en entrée …

Exécuter dans l’ISeries Navigateur les instructions suivantes :

CREATE PROCEDURE my_lib.my_sp1 ( )
LANGUAGE RPGLE
SPECIFIC my_lib.my_sp1
NOT DETERMINISTIC
READS SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME 'my_lib/nom_pgm_rpgle'
PARAMETER STYLE SQL ;

Les paramètres se gèrent de la même manière qu’en pure SQL : IN, OUT, INOUT voir l’article sur les procédures stockées sql.

Avec le Wizard

iseries procedure

Se positionner sur Procédure, clic droit > Nouveau > Externe

iseries procedure new externe

Onglet 1 : info générale

iseries procedure new externe wizard onglet général

Onglet 2 : les paramètres (passez l’étape si vous n’en avez pas)

iseries procedure new externe wizard onglet parametre

Onglet 3 : le nom du programme

iseries procedure new externe wizard onglet programme externe

Important!

Vous avez remarqué ? il y’a d’autres types que le RPGLE (C, C++, CL, COBOL, COBOLLE, PLI, REXX, RPG)

Et pour finir [OK]

Et côté RPG, à quoi ressemble mes paramètres ?

à l’Entry classique :

 

 

Ok pour un paramètre en IN, en OUT … mais si je veux retourner un résultat plus imposant ? comme le résultat d’un select par exemple ? Comment faire pour retourner un Curseur ?

Les curseurs

Un curseur, c’est comme un pointeur sur un tuple de résultat SQL, il permet depuis l’extérieur de naviguer dans un result set …

 

Il faut l’open du cursor dans le RPG

C/EXEC SQL
C+ DECLARE C_MyName SCROLL CURSOR FOR PREPSTMTL
C/END-EXEC
:
C/EXEC SQL
C+ OPEN C_MyName
C/END-EXEC
C/EXEC SQL
C+ SET RESULT SETS CURSOR C_MyName
C/END-EXEC
:
C/EXEC SQL
C+ FETCH NEXT FROM C_MyName FOR :NROWS ROWS INTO :TABSFI
C/END-EXEC
:
C/EXEC SQL
C+ CLOSE C_MyName
C/END-EXEC

 

Des questions ? Suggestions ?  N’hésitez pas à laisser un commentaire …

maKyo

Incoming search terms:

  • procédure stockée iseries
  • appel procrdure stockée db2 as400
  • procédure stockée as400

Lien Permanent pour cet article : http://ma-kyo.com/procedure-stockee-externe-sql-rpg/