Developpez.com

Une très vaste base de connaissances en informatique avec
plus de 100 FAQ et 10 000 réponses à vos questions

Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


Lire dans une colonne LONG RAW

Date de publication : 15/12/05

Par Stéphanie Tirtiat (Intl Tech Support)
 

Code exemple pour lire dans une colonne Oracle de type LONG RAW avec 4D for OCI


Produit : 4D OCI 2004  ·  Plateforme : Mac & Win


Avec 4D for OCI 2004.3, vous pouvez lire et retrouver le contenu d'une colonne LONG RAW dans une base Oracle à condition de réunir ces trois conditions :

   1. la variable de réception doit être de type BLOB

   2. le datatype doit être SQLT_LBI

   3. le mode doit être OCI_DYNAMIC_FETCH (et non OCI_DEFAULT)


Exemple de code:

   `methode Lecture_long_raw
   `lit les données d’une colonne long raw
   `et crée le fichier image (jpg) dans le dossier de la base

C_ENTIER LONG(envhp;errhp;svchp;vDefine;stmthp;stmtSelecthp)
C_ENTIER LONG(RealLength)
C_BLOB(ZeBlob)

   `--------------------------------------------
   `CONDITION 1 : blob

FIXER TAILLE BLOB(ZeBlob;0)
   `--------------------------------------------

C_POINTEUR(vp_Null1;vp_Null3)
ReadLength:=0

C_TEXTE($UserName;$Password;$ServiceName;$SQL_statement)

$UserName:="xxx"
$Password:="xxx"
$ServiceName:="xxx"

Status:=OCIEnvCreate (envhp;OCI_OBJECT )
Status:=OCIHandleAlloc (envhp;errhp;OCI_HTYPE_ERROR )
Status:=OCILogon (envhp;errhp;svchp;$UserName;$Password;$ServiceName)
Status:=OCIHandleAlloc (envhp;stmthp;OCI_HTYPE_STMT )

$SQL_statement:="SELECT lgraw FROM test_LGRAW WHERE key = 20"
Status:=OCIHandleAlloc (envhp;stmtSelecthp;OCI_HTYPE_STMT )
Si (Status=OCI_SUCCESS )
   Status:=OCIStmtPrepare (stmtSelecthp;errhp;$SQL_statement;OCI_DEFAULT )
      `--------------------------------------------
      ` CONDITION 2 : SQLT_LBI for LONG RAW
      ` CONDITION 3 : OCI_DYNAMIC_FETCH instead of OCI_DEFAULT
   Status:=OCIDefineByPos (stmtSelecthp;vDefine;errhp;1;->ZeBlob;SQLT_LBI ;vp_Null1;
->ReadLength;vp_Null3;OCI_DYNAMIC_FETCH )
      `--------------------------------------------
   $status:=OCIErrorGet (errhp;1;$errornum;$errorexplain)
   Si ($errornum#0)
      ALERTE(Chaine($errornum)+Caractere(13)+$errorexplain)
   Fin de si
   Repeter
      Status:=OCIStmtExecute (svchp;stmtSelecthp;errhp;1;0;0;0;OCI_DEFAULT )
   Jusque (Status#OCI_STILL_EXECUTING )
   Status:=OCIHandleFree (stmtSelecthp)
Fin de si

   `supprimer les 8 premiers caractères si l'image a été insérée avec 4D for Oracle
SUPPRIMER DANS BLOB(ZeBlob;0;8)

Si (ReadLength>0)
   $DocRef:=Creer document("longraw_image.jpg")
   Si (OK=1)
      FERMER DOCUMENT($DocRef)
      BLOB VERS DOCUMENT(Document;ZeBlob)
   Fin de si
Sinon
   ALERTE("Taille du blob : zero !")
Fin de si

Status:=OCIHandleFree (stmthp)
Status:=OCILogoff (svchp;errhp)
Status:=OCIHandleFree (errhp)
Status:=OCICleanUp (envhp)

FIXER TAILLE BLOB(ZeBlob;0) `empty blob

   `fin de methode



Valid XHTML 1.1!Valid CSS!

Copyright © 2005 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique 4D