ocinewdescriptor
(PHP 3>= 3.0.7, PHP 4 , PHP 5)
ocinewdescriptor -- Initialise un nouveau pointeur vide de LOB/FILE
Description
object
ocinewdescriptor ( resource connection [, int type])
ocinewdescriptor() alloue l'espace
nécessaire pour stocker un descripteur, ou un pointeur
de LOB sur la connexion connection.
Les valeurs acceptées pour type sont
OCI_D_FILE, OCI_D_LOB et OCI_D_ROWID.
Pour les pointeurs de LOB, les méthodes load, save, et savefile sont
associées avec le pointeur. Pour les pointeurs de type BFILE,
seule la méthode load existe. Voyez le second exemple pour une
illustration.
Exemple 1. Exemple avec ocinewdescriptor()
<?php /* Ce script est fait pour être appelé dans un formulaire HTML * Il attends les variables $user, $password, $table, $where, et $commitsize * Le script efface alors les lignes sélectionnées avec ROWID et valide * l'effacement après chaque groupe de $commitsize lignes. * (Utilisez avec prudence, car il n'y a pas d'annulation possible). */ $conn = OCILogon($user, $password); $stmt = OCIParse($conn,"select rowid from $table $where"); $rowid = OCINewDescriptor($conn,OCI_D_ROWID); OCIDefineByName($stmt,"ROWID",&$rowid); OCIExecute($stmt); while ( OCIFetch($stmt) ) { $nrows = OCIRowCount($stmt); $delete = OCIParse($conn,"delete from $table where ROWID = :rid"); OCIBindByName($delete,":rid",&$rowid,-1,OCI_B_ROWID); OCIExecute($delete); print "$nrows\n"; if ( ($nrows % $commitsize) == 0 ) { OCICommit($conn); } } $nrows = OCIRowCount($stmt); print "$nrows deleted...\n"; OCIFreeStatement($stmt); OCILogoff($conn); ?>
|
<?php /* Ce script est fait pour être appelé depuis un formulaire HTML. * Il attends les variables $user, $password, $table, $where, et $commitsize, * données par le formulaire. Le script efface * les lignes sélectionnées avec ROWID est valide les transactions * à chaque jeu de $commitsize lignes. (Attention : il n'y plus d'annulation) */ if(!isset($lob_upload) || $lob_upload == 'none'){ ?> <form action="upload.php" method="post" enctype="multipart/form-data"> Fichier à télécharger : <input type="file" name="lob_upload"><br> <input type="submit" value="Envoyer"> - <input type="reset"> </form> <?php } else {
// $lob_upload contient le nom temporaire du fichier téléchargé
// voir aussi la section fonctionnalités sur les téléchargements de // fichiers si vous voulez utiliser des téléchargements sécurisés $conn = OCILogon($user, $password); $lob = OCINewDescriptor($conn, OCI_D_LOB); $stmt = OCIParse($conn,"insert into $table (id, the_blob) values(my_seq.NEXTVAL, EMPTY_BLOB()) returning the_blob into :the_blob"); OCIBindByName($stmt, ':the_blob', &$lob, -1, OCI_B_BLOB); OCIExecute($stmt, OCI_DEFAULT); if($lob->savefile($lob_upload)){ OCICommit($conn); echo "Blob bien téléchargé\n"; }else{ echo "Impossible de télécharger le Blob\n"; } OCIFreeDesc($lob); OCIFreeStatement($stmt); OCILogoff($conn); } ?>
|
|
Exemple 2. Exemple avec ocinewdescriptor() <?php
/* Appel d'une procédure PL/SQL stockée qui prend un clobs
* en entrée (PHP 4 >= 4.0.6).
* Exemple de signateure de procédure stockée PL/SQL :
*
* PROCEDURE save_data
* Nom de l'argument Type In/Out Default?
* ------------------------------ ----------------------- ------ --------
* KEY NUMBER(38) IN
* DATA CLOB IN
*
*/
$conn = OCILogon($user, $password);
$stmt = OCIParse($conn, "begin save_data(:key, :data); end;");
$clob = OCINewDescriptor($conn, OCI_D_LOB);
OCIBindByName($stmt, ':key', $key);
OCIBindByName($stmt, ':data', $clob, -1, OCI_B_CLOB);
$clob->WriteTemporary($data);
OCIExecute($stmt, OCI_DEFAULT);
OCICommit($conn);
$clob->close();
$clob->free();
OCIFreeStatement($stmt);
?> |
|
Note :
Cette fonction a été renommée en oci_new_descriptor()
pour PHP version 5.0.0 et plus récent. Pour la compatibilité
ascendante, ocinewdescriptor() peut toujours être utilisée.
Toutefois, elle est obsolète.