> Tech > Procédures stockées

Procédures stockées

Tech - Par iTPro - Publié le 24 juin 2010
email

La mouture SQL d’IBM permet « d’envelopper » des programmes externes en RPG et Cobol dans des procédures stockées. Je sais ce que vous pensez : « Nous n’utilisons pas SQL ». Et bien, c’est peut-être le moment d’ y songer. Les procédures stockées SQL résolvent quelques-unes des difficultés les

plus courantes avec une interface Web:

1. SQL traite la conversion d’EBCDIC en ASCII (ou, comme je l’appelle en Java, de EBCDIC en objet) pour l’utiliser avec des langages iSeries non traditionnels (comme Java, Visual Basic et C++).
2. Vous pouvez bénéficier de pools de connexion facilement disponibles, capables d’améliorer spectaculairement la performance.
3. Les données renvoyées sont retransmises par ce qu’on appelle un jeu de résultats, facilitant le traitement de grands ensembles de données et encapsulant la définition de la s t ructure de renvoi comme métadonnées SQL.
4. L’ajout des champs de jeux de résultats ou la longueur accrue des champs n’affectent pas le programme client.

Il est facile de créer une procédure stockée SQL comme enveloppe du programme RPG. L’instruction SQL suivante crée une procédure stockée qui enveloppe le programme MAST002 RPG, lequel a des paramètres pour un numéro packé de neuf chiffres, un numéro zoné de quatre chiffres et un champ de 50 caractères :

CREATE PROCEDURE
MYLIB/GETPOLICY ( IN social DECIMAL (9, 0),
OUT errorCode NUMERIC (4, 0),
OUT errorDescr CHAR ( 50 ) )
LANGUAGE RPG
NOT DETERMINISTIC
NO SQL
PARAMETER STYLE GENERAL
EXTERNAL NAME MYLIB/MAST002

A noter que vous pouvez exécuter l’instruction create procedure via l’interface SQL iSeries, la commande RUNSQLSTMT, le client WebSphere Development Studio (WDSc), ou iSeries Navigator. (Pour plus d’informations sur la création de procédures stockées, voir l’IBM Redbook Stored Procedures, Triggers and User Defined Functions on DB2 Universal Database for iSeries.)

Comme je l’ai déjà dit, le programmeur d’applications Web a besoin d’une API bien définie, simple d’emploi, qui renvoie une chose ou un ensemble de choses – de manière cohérente. Qu’est-ce que j’entends par « une chose » ? J’entends soit une structure de données, soit un jeu ordinal de cette structure de données où la structure en question contient généralement l’état d’une entité de gestion spécifique. Avec des procédures stockées, vous pouvez renvoyer cette chose de deux manières :

1. Passer la « chose » en retour comme une structure de données dans une variable de sortie.
2. Renvoyer la « chose » explicitement comme un jeu de résultats SQL.

Quand vous utilisez la première option et que vous renvoyez un jeu, il faut déterminer statistiquement la taille de la longueur variable de sortie pour qu’elle soit aussi longue que le nombre maximum d’éléments pouvant être retourné, multiplié par la longueur d’un élément de ce jeu. En revanche, un jeu de résultats SQL peut renvoyer un nombre quelconque d’éléments. Je vous entends encore : « Mais mon programme RPG n’utilise pas SQL ». Voici un truc simple : vous pouvez associer une structure de données à occurrences multiples à un groupe SQL, en une instruction :

C/EXEC SQL
C+ SET RESULT SETS ARRAY:multDS
C+ FOR:recCount ROWS
C/END-EXEC

Les mots précédés du signe deux-points (multDS et rec Count) sont des variables qui référencent la structure de données à occurrences multiples et le nombre d’éléments DS viables qui doivent être renvoyés dans le jeu de résultats. A noter qu’il vous faudra changer le type de source de RPG en SQLRPG ou SQLRPGLE et compiler avec la commande appropriée. Et aussi créer la procédure stockée sans l’option NO SQL (afin que la procédure stockée sache qu’il y a SQL dans le programme RPG).

Téléchargez gratuitement cette ressource

Les 7 étapes d’un projet de dématérialisation RH

Les 7 étapes d’un projet de dématérialisation RH

Dans ce livre blanc, nous vous donnons les clés pour concevoir votre projet de dématérialisation RH. Vous découvrirez chacune des étapes qui vous permettront d’apporter de nouveaux services aux collaborateurs, de vous adapter aux nouvelles pratiques et de renforcer la marque employeur.

Tech - Par iTPro - Publié le 24 juin 2010