Produit : 4D ODBC 2004 · Plateforme : Mac & Win
Ci-dessous un code exemple qui récupère les données d'une colonne Oracle de type LONG RAW avec les commandes du plugin 4D ODBC Pro 2004.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
`----- méthode -----
`méthode qui initialise les variables
InitVariables
`méthode initialisant les paramètres de connexions
`‹›DataSource, ‹›UserName, ‹›Password
Log
inParameters
$result
:=
ODBC_SQLAllocConnect (
$connectionID
)
$result
:=
ODBC_SQLConnect (
$connectionID
;
‹›DataSource;
‹›UserName;
‹›Password)
Si
(
$result
=
SQL_SUCCESS )
`Connexion OK
$result
:=
ODBC_SQLAllocStmt (
$connectionID
;
$statementID
)
`la requête
`la table test_lgraw contient une colonne NUMBER et une colonne LONG RAW contenant des fichiers images jpg
$sql_statement
:=
"select key, lgraw FROM test_lgraw where key='10'"
$result
:=
ODBC_SQLPrepare (
$statementID
;
$sql_statement
)
$result
:=
ODBC_SQLBindCol (
$statementID
;
1
;->
ZeKey;->
zeLength)
$result
:=
ODBC_SQLExecute (
$statementID
)
$result
:=
ODBC_SQLFetch (
$statementID
)
Si
(
$result
#
0
)
C_ENTIER LONG
(
$res
)
$res
:=
ODBC_SQLGetDiagRec (
SQL_HANDLE_STMT;
$statementID
;
1
;
SQLState;
nativeError;
debugMess)
Fin de si
`il faut définir une taille de blob à l'avance
$size
:=
1024
FIXER TAILLE BLOB
(
zeBlob;
$size
)
FIXER TAILLE BLOB
(
zeBlobFinal;
0
)
$offset
:=
0
Repeter
`on reçoit morceau par morceau (ici, 1024 bytes par itération)
$result
:=
ODBC_SQLGetData (
$statementID
;
2
;->
zeBlob;
zeLength)
Si
(
zeLength>
$size
)
COPIER BLOB
(
zeBlob;
zeBlobFinal;
0
;
$offset
;
$size
)
Sinon
COPIER BLOB
(
zeBlob;
zeBlobFinal;
0
;
$offset
;
zeLength)
Fin de si
$offset
:=
$offset
+
$size
Jusque
((
$result
=
SQL_NO_DATA )
|
(
$result
>
0
))
`créer un document avec l'image reçue
$docRef
:=
Creer document
(
"lgraw_image.jpg"
)
FERMER DOCUMENT
(
$docRef
)
BLOB VERS DOCUMENT
(
document;
zeBlobFinal)
`libérer les connexions
$result
:=
ODBC_SQLFreeStmt (
$statementID
;
SQL_UNBIND )
$result
:=
ODBC_SQLDisconnect (
$connectionID
)
Sinon
ALERTE
(
"Impossible de se connecter !"
)
Fin de si
` ----- /méthode -----