Lecture, Création d’image dans une table SQL en RPGLE

AddThis Social Bookmark Button

 

Il est tout a fait possible de stocker une image (JPEG, BMP, ...) dans une table SQL. 

Grace au type de données BLOB, le system i peut stocker et restituer ce type de fichier !

Dans un premier temps, il faut creer une table. L'exemple suivant créer une table avec 2 champ. Un identifiant, et un champ de type BLOB limité à 200 k(la taille maximum de celui ci peut être défini à 2Mo)

 

Remarque : En fait, il est possible de stocker tout type de fichier dans ce champ. (pdf, doc, xls, ......)

 

CREATE TABLE HOM_PHOTO                                           

 (NUMHOM CHAR ( 7) NOT NULL,                                     

  PICHOM  BLOB(200 K) ,                                          

  PRIMARY KEY (NUMHOM))                                         

 

 

 Le BLOB étant un champ de taille variable, celui ci aura la taille de l'image qu'il contient.

 

** Le programme suivant indique comment insérer dans la table HOM_PHOTO

**  l'image contenue dans le répertoire CSE de l'ISF.

D NUM             s              7                                     

D pic                s                   SQLTYPE(BLOB_FILE)              

D Out               s                   SQLTYPE(BLOB_FILE)              

                                                                      

C                   Time                    WNum             12 0     

C                   Time                    WNum             12 0   

C                   Move      Wnum          Num                     

                                                                    

C                   Eval      pic_fo   = SQFRD                      

C                   Eval      pic_name = '/home/CSE/logo_cf.jpg'    

C                   Eval      pic_nl   = %len(%trimr(pic_name))     

 

C/EXEC SQL                                                           

C+ INSERT INTO HOM_PHOTO VALUES(:NUM, :pic)                 

C/END-EXEC                                            

 

 

** Puis, comment créer un fichier image dans l'IFS à partir de l'enregistrement contenu dans la table.HOM_PHOTO 

** La variable out_fo peut contenir plusieurs valeurs :

**           SQFRD  (Lecture),

**           **       SQFCRT (Création avec message d'erreur si le fichier existe déjà),

**           SQFOVR (Création avec remplacement si le fichier existe déjà).        

                                                                    

C                   Eval      out_fo   = SQFOVR                     

C                   Eval      out_name = '/home/CSE/' + NUM +'.jpg' 

C                   Eval      out_nl   = %len(%trimr(out_name))     

C/EXEC SQL                                                          

C+ Select pichom                                                    

C+             Into :out                                            

C+             From  HOM_PHOTO                              

C+             Where NUMHOM = :NUM                         

C/END-EXEC                                               

 

 Cet article vous a été utile, n'hésitez pas à le partager.