oci_new_descriptor

(PHP 5, PECL oci8:1.1-1.2.4)

oci_new_descriptor — Initialise un nouveau pointeur vide de LOB/FILE Oracle

Description

OCI-Lob oci_new_descriptor ( resource $connection [, int $type] )

Initialise un nouveau pointeur vide de LOB/FILE Oracle.

Liste de paramètres

connection

Un identifiant de connexion Oracle, retourné par la fonction oci_connect() ou la fonction oci_pconnect() .

type

Les valeurs acceptées pour type sont : OCI_D_FILE , OCI_D_LOB et OCI_D_ROWID .

Valeurs de retour

Retourne un nouveau descripteur LOB ou FILE en cas de succès, FALSE si une erreur survient.

Exemples

Exemple 1817. Exemple avec oci_new_descriptor()

<?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  oci_connect ( $user $password );
$stmt  oci_parse ( $conn "select rowid from $table $where" );
$rowid  oci_new_descriptor ( $conn OCI_D_ROWID );
oci_define_by_name ( $stmt "ROWID" $rowid );
oci_execute ( $stmt );
while (
oci_fetch ( $stmt )) {
    
$nrows  oci_num_rows ( $stmt );
    
$delete  oci_parse ( $conn "delete from $table where ROWID = :rid" );
    
oci_bind_by_name ( $delete ":rid" $rowid , - 1 OCI_B_ROWID );
    
oci_execute ( $delete );
    echo 
"$nrows\n" ;
    if ((
$nrows  $commitsize ) ==  0 ) {
        
oci_commit ( $conn );
    }
}
$nrows  oci_num_rows ( $stmt );
echo 
"$nrows deleted...\n" ;
oci_free_statement ( $stmt );
oci_close ( $conn );
?>
<?php
/* Ce script illustre le chargement de LOB
 * Le formulaire utilisé dans cet exemple ressemble à ceci : 
 * <form action="upload.php" method="post" enctype="multipart/form-data">
 * <input type="file" name="lob_upload" />
 * ...
 */
  
if (!isset( $lob_upload ) ||  $lob_upload  ==  'none' ){
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
Upload file: <input type="file" name="lob_upload" /><br />
<input type="submit" value="Upload" /> - <input type="reset" value="Reset" />
</form>
<?php
  
} else {

     
// $lob_upload contient le fichier temporaire

     // Reportez-vous à la section sur le téléchargement de fichiers
     // pour sécuriser vos téléchargements

     
$conn  oci_connect ( $user $password );
     
$lob  oci_new_descriptor ( $conn OCI_D_LOB );
     
$stmt  oci_parse ( $conn "insert into $table (id, the_blob)
               values(my_seq.NEXTVAL, EMPTY_BLOB()) returning the_blob into :the_blob"
);
     
oci_bind_by_name ( $stmt ':the_blob' $lob , - 1 OCI_B_BLOB );
     
oci_execute ( $stmt OCI_DEFAULT );
     if (
$lob -> savefile ( $lob_upload )){
        
oci_commit ( $conn );
        echo 
"BLOB chargé !\n" ;
     }else{
        echo 
"Impossible de charger le BLOB\n" ;
     }
     
oci_free_descriptor ( $lob );
     
oci_free_statement ( $stmt );
     
oci_close ( $conn );
  }
?>

Exemple 1818. Exemple avec oci_new_descriptor()

<?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
 *   Argument Name                  Type                    In/Out Default?
 *   ------------------------------ ----------------------- ------ --------
 *   KEY                            NUMBER(38)              IN
 *   DATA                           CLOB                    IN
 *
 */

$conn  oci_connect ( $user $password );
$stmt  oci_parse ( $conn "begin save_data(:key, :data); end;" );
$clob  oci_new_descriptor ( $conn OCI_D_LOB );
oci_bind_by_name ( $stmt ':key' $key );
oci_bind_by_name ( $stmt ':data' $clob , - 1 OCI_B_CLOB );
$clob -> write ( $data );
oci_execute ( $stmt OCI_DEFAULT );
oci_commit ( $conn );
$clob -> free ();
oci_free_statement ( $stmt );
?>

Notes

Note: Dans les versions de PHP antérieures à la version 5.0.0, vous devez utiliser la fonction ocinewdescriptor() . Cet ancien nom est toujours utilisable : un alias a été fait vers la fonction oci_new_descriptor() , pour assurer la compatibilité ascendante. Toutefois, il est recommandé de ne plus l'utiliser.