Produit : 4D ODBC Pro (4D 2004) · Plateforme : Mac & Win ♪
Voici un code exemple qui écrit des données dans une colonne Oracle de type BLOB avec les commandes du plugin 4D ODBC Pro 2004.
La méthode procède d'abord avec un INSERT, puis utilise une requête UPDATE pour ajouter le document sélectionné dans la colonne Oracle de type BLOB qui vient d'être créée avec l'INSERT.
C_ENTIER LONG
(
$result
;
$connectionID
;
$statementID
;
$res
;
$res2
)
C_TEXTE
(
SQLState)
C_ENTIER LONG
(
nativeError)
C_TEXTE
(
debugMess)
C_TEXTE
(<>
DataSource;<>
UserName;<>
Password)
`xxx à remplacer
<>
DataSource:=
"xxx"
<>
UserName:=
"xxx"
<>
Password:=
"xxx"
$result
:=
ODBC_SQLAllocConnect (
$connectionID
)
$result
:=
ODBC_SQLConnect (
$connectionID
;<>
DataSource;<>
UserName;<>
Password)
Si
(
$result
=
SQL_SUCCESS )
`Connexion OK
$result
:=
ODBC_SQLAllocStmt (
$connectionID
;
$statementID
)
`handle
C_ENTIER LONG
(
zeLength)
zeLength:=
0
C_ENTIER LONG
(
zeID)
C_TEXTE
(
zeName)
` ------------ INSERT -------------
$sql_statement
:=
"INSERT INTO test_lob VALUES (?, ?, NULL)"
$result
:=
ODBC_SQLPrepare (
$statementID
;
$sql_statement
)
zeID:=
20
zeName:=
"doc_20"
$result
:=
ODBC_SQLBindParameter (
$statementID
;
1
;
1
;
SQL_INTEGER ;
0
;
0
;->
zeID;->
zeLength)
`colonne NUMBER
$result
:=
ODBC_SQLBindParameter (
$statementID
;
2
;
1
;
SQL_VARCHAR ;
0
;
0
;->
zeName;->
zeLength)
`colonne VARCHAR2
$result
:=
ODBC_SQLExecute (
$statementID
)
Si
(
$result
#-
1
)
`si pas d'erreur
` ------------ UPDATE -------------
$sql_statement
:=
"UPDATE test_lob SET t_blob = ? WHERE t_ID = 20"
$result
:=
ODBC_SQLPrepare (
$statementID
;
$sql_statement
)
C_BLOB
(
zeBlob)
C_HEURE
(
$doc
)
$doc
:=
Ouvrir document
(
""
)
Si
(
ok=
1
)
FERMER DOCUMENT
(
$doc
)
DOCUMENT VERS BLOB
(
document;
zeBlob)
Fin de si
zeLength:=
ODBC_LenDataAtExec (
0
)
$result
:=
ODBC_SQLBindParameter (
$statementID
;
1
;
1
;
SQL_LONGVARBINARY ;
0
;
0
;->
zeBlob;->
zeLength)
$result
:=
ODBC_SQLExecute (
$statementID
)
`retourne normalement 99 SQL_NEED_DATA
Si
(
$result
#-
1
)
`si pas d'erreur
Tant que
(
$result
=
SQL_NEED_DATA )
$result
:=
ODBC_SQLParamData (
$statementID
)
Si
(
$result
=
SQL_NEED_DATA )
$res2
:=
ODBC_SQLPutData (
$statementID
;->
zeBlob;
0
)
Fin de si
Fin tant que
Sinon
TRACE
`passe en mode debug
$res
:=
ODBC_SQLGetDiagRec (
SQL_HANDLE_STMT ;
$statementID
;
1
;
SQLState;
nativeError;
debugMess)
Fin de si
Sinon
TRACE
`passe en mode debug
$res
:=
ODBC_SQLGetDiagRec (
SQL_HANDLE_STMT ;
$statementID
;
1
;
SQLState;
nativeError;
debugMess)
Fin de si
$result
:=
ODBC_SQLFreeStmt (
$statementID
)
`libère le handle
$result
:=
ODBC_SQLDisconnect (
$connectionID
)
`déconnexion
Sinon
ALERTE
(
"connection failed"
)
Fin de si
Documentation des commandes du plugin 4D ODBC Pro :