Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Oracle Functions : oci_new_descriptor

oci_new_descriptor

Initializes a new empty LOB or FILE descriptor (PHP 5, PECL oci8:1.1-1.2.4)
OCI-Lob oci_new_descriptor ( resource connection [, int type] )

Example 1653. oci_new_descriptor() example

<?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);
?>
<?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";
    }
   
oci_free_descriptor($lob);
   
oci_free_statement($stmt);
   
oci_close($conn);
 }
?>

Example 1654. oci_new_descriptor() example

<?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);
?>
Examples ( Source code ) » oci_new_descriptor

<?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($connOCI_D_LOB);
oci_bind_by_name($stmt':key'$key);
oci_bind_by_name($stmt':data'$clob, -1OCI_B_CLOB);
$clob->write($data);
oci_execute($stmtOCI_DEFAULT);
oci_commit($conn);
$clob->free();
oci_free_statement($stmt);
?>


Note: 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. 

Related Examples ( Source code ) » oci_new_descriptor


Code Examples / Notes » oci_new_descriptor

ben hubbard ben

Here is another example of how to insert a BLOB into table using a PL/SQL function.
Oracle Database Code:
create table blob_table ( the_blob blob);
create or replace function insert_blob(out_blob out blob)
   return integer is
   begin
      insert into blob_table values (EMPTY_BLOB())
        return the_blob into out_blob;
      return 0; /* Success */
   end insert_blob;
PHP Code:
<?php
 $iResult = -1;
 $strTestData = 'Testing 123';
 $conn = oci_connect($user, $password);
 $stmt = oci_parse($conn, "begin :RES := insert_blob(:OUT_BLOB); end;");

 $objBlob = oci_new_descriptor($conn, OCI_D_LOB);
 oci_bind_by_name($stmt, ":RES", $iResult);
 oci_bind_by_name($stmt, ":OUT_BLOB", $objBlob, -1, OCI_B_BLOB);
 oci_execute($stmt, OCI_DEFAULT);
 $objBlob->write($strTestData);
 oci_commit($conn);
 $objBlob->free();
 oci_free_statement($stmt);
?>


Change Language


Follow Navioo On Twitter
oci_bind_array_by_name
oci_bind_by_name
oci_cancel
oci_close
OCI-Collection->append
OCI-Collection->assign
OCI-Collection->assignElem
OCI-Collection->free
OCI-Collection->getElem
OCI-Collection->max
OCI-Collection->size
OCI-Collection->trim
oci_commit
oci_connect
oci_define_by_name
oci_error
oci_execute
oci_fetch_all
oci_fetch_array
oci_fetch_assoc
oci_fetch_object
oci_fetch_row
oci_fetch
oci_field_is_null
oci_field_name
oci_field_precision
oci_field_scale
oci_field_size
oci_field_type_raw
oci_field_type
oci_free_statement
oci_internal_debug
OCI-Lob->append
OCI-Lob->close
oci_lob_copy
OCI-Lob->eof
OCI-Lob->erase
OCI-Lob->export
OCI-Lob->flush
OCI-Lob->free
OCI-Lob->getBuffering
OCI-Lob->import
oci_lob_is_equal
OCI-Lob->load
OCI-Lob->read
OCI-Lob->rewind
OCI-Lob->save
OCI-Lob->saveFile
OCI-Lob->seek
OCI-Lob->setBuffering
OCI-Lob->size
OCI-Lob->tell
OCI-Lob->truncate
OCI-Lob->write
OCI-Lob->writeTemporary
OCI-Lob->writeToFile
oci_new_collection
oci_new_connect
oci_new_cursor
oci_new_descriptor
oci_num_fields
oci_num_rows
oci_parse
oci_password_change
oci_pconnect
oci_result
oci_rollback
oci_server_version
oci_set_prefetch
oci_statement_type
ocibindbyname
ocicancel
ocicloselob
ocicollappend
ocicollassign
ocicollassignelem
ocicollgetelem
ocicollmax
ocicollsize
ocicolltrim
ocicolumnisnull
ocicolumnname
ocicolumnprecision
ocicolumnscale
ocicolumnsize
ocicolumntype
ocicolumntyperaw
ocicommit
ocidefinebyname
ocierror
ociexecute
ocifetch
ocifetchinto
ocifetchstatement
ocifreecollection
ocifreecursor
ocifreedesc
ocifreestatement
ociinternaldebug
ociloadlob
ocilogoff
ocilogon
ocinewcollection
ocinewcursor
ocinewdescriptor
ocinlogon
ocinumcols
ociparse
ociplogon
ociresult
ocirollback
ocirowcount
ocisavelob
ocisavelobfile
ociserverversion
ocisetprefetch
ocistatementtype
ociwritelobtofile
ociwritetemporarylob
eXTReMe Tracker