Insertion de plusieurs BLOB dans une table ORACLE avex PDO
Posté : 30 nov. 2015, 15:18
Bonjour,
Je suis en cour de réalisation d'une application pour laquelle certaines des tables contiennent plusieurs BLOB.
En fait, je l'avais écrite avec PostgreSQL en cible, mais il faudrait que ça fonctionne avec les 2. J'ai rendu l'appli (assez) portable, mais je bloque sur un point.
Je vous passe la galère d'insertion de BLOB ou CLOB dans ORACLE avec PHP/PDO, alors que c'est si naturel avec postgresql...
Ca va encore quand il n'y a qu'un seul BLOB, je fait:
Déjà, j'ai été obligé de déclarer les colonnes en BLOB alors que ce sont des CLOB (sinon message d'erreur) mais passons. Le problème est quand j'ai deux colonnes ou plus en BLOB.
je ne vois pas comment gérer la partie
étant donné que je ne peux retourner qu'une valeur (enfin sous cette forme, je suppose).
L'un d'entre vous a-t-il été confronté à ce problème ? A-t-il une solution ?
Merci.
Je suis en cour de réalisation d'une application pour laquelle certaines des tables contiennent plusieurs BLOB.
En fait, je l'avais écrite avec PostgreSQL en cible, mais il faudrait que ça fonctionne avec les 2. J'ai rendu l'appli (assez) portable, mais je bloque sur un point.
Je vous passe la galère d'insertion de BLOB ou CLOB dans ORACLE avec PHP/PDO, alors que c'est si naturel avec postgresql...
Ca va encore quand il n'y a qu'un seul BLOB, je fait:
Code : Tout sélectionner
<?php
// ....
$cnx = $this->_hcnx->handle(); // un handle de connexion PDO
if ($this->_hcnx->get_driver() == "ORACLE" ) {
$qry =
" update pp_traitement"
." set"
." trt_nombre_traites=:nbre"
." ,trt_termine='Y'"
." ,trt_ts_fin=CURRENT_TIMESTAMP"
." ,trt_commentaire=EMPTY_BLOB()" // --- ça c'est un CLOB ou plutot un BLOB, cf. ci-dessous
." where"
." trt_id=:trt_id"
." RETURNING trt_commentaire INTO :com"
;
$cnx->beginTransaction();
$sth = $cnx->prepare($qry, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->bindValue(':trt_id', $this->_id_traitement);
$sth->bindValue(':nbre', $lignes);
$clob = null;
$sth->bindParam(':com', $clob, PDO::PARAM_LOB);
$sth->execute();
fwrite( $clob, nl2br($message));
fclose( $clob );
$cnx->commit();
}
// ....
?>
je ne vois pas comment gérer la partie
Code : Tout sélectionner
<?php
." RETURNING trt_commentaire INTO :com"
?>L'un d'entre vous a-t-il été confronté à ce problème ? A-t-il une solution ?
Merci.