(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
Initializes a new empty LOB or FILE descriptor
OCI-Lob oci_new_descriptor ( resource $connection [, int $type = OCI_DTYPE_LOB ] )
Allocates resources to hold descriptor or LOB locator.
Parameters:
connection
An Oracle connection identifier, returned by oci_connect() or oci_pconnect().
type
Valid values for type
are: OCI_DTYPE_FILE
, OCI_DTYPE_LOB
and OCI_DTYPE_ROWID
.
Returns:
Returns a new LOB or FILE descriptor on success, FALSE
on error.
Notes:
In PHP versions before 5.0.0 you must use ocinewdescriptor() instead. This name still can be used, it was left as alias of oci_new_descriptor() for downwards compatability. This, however, is deprecated and not recommended.
Examples:
oci_new_descriptor() example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php /* This script is designed to be called from a HTML form. * It expects $user, $password, $table, $where, and $commitsize * to be passed in from the form. The script then deletes * the selected rows using the ROWID and commits after each * set of $commitsize rows. (Use with care, there is no rollback) */ $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 ); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <?php /* This script demonstrates file upload to LOB columns * The formfield used for this example looks like this * <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 contains the temporary filename of the uploaded file // see also the features section on file upload, // if you would like to use secure uploads $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 successfully uploaded\n" ; } else { echo "Couldn't upload Blob\n" ; } $lob ->free(); oci_free_statement( $stmt ); oci_close( $conn ); } ?> |
oci_new_descriptor() example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php /* Calling PL/SQL stored procedures which contain clobs as input * parameters (PHP 4 >= 4.0.6). * Example PL/SQL stored procedure signature is: * * 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 ); ?> |
See also:
Please login to continue.