(PHP 5, PECL oci8:1.1-1.2.4)
oci_new_descriptor — Initialise un nouveau pointeur vide de LOB/FILE Oracle
Initialise un nouveau pointeur vide de LOB/FILE Oracle.
Un identifiant de connexion Oracle, retourné par la fonction oci_connect() ou la fonction oci_pconnect() .
Les valeurs acceptées pour type sont : OCI_D_FILE , OCI_D_LOB et OCI_D_ROWID .
Retourne un nouveau descripteur LOB ou FILE en cas de succès, FALSE si une erreur survient.
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
);
?>
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.