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 BLOB avec les commandes du plugin 4D ODBC Pro 2004.
Sélectionnez
1.
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.
60.
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.
60.
`----- 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_blob contient une colonne VARCHAR et une colonne BLOB comportant des images jpg
$sql_statement
:=
"select * from test_blob where name='NENUPHAR'"
$result
:=
ODBC_SQLPrepare (
$statementID
;
$sql_statement
)
$result
:=
ODBC_SQLBindCol (
$statementID
;
1
;->
ZeName;->
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
)
`le blob qui reçoit le data
FIXER TAILLE BLOB
(
zeBlobFinal;
0
)
`le blob concaténé
$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
(
"blob_nenuphar.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 -----