OCINewDescriptor

(PHP 3>= 3.0.7, PHP 4 )

OCINewDescriptor --  Egy új üres LOB vagy FILE leírót hoz létre

Leírás

string OCINewDescriptor ( int connection [, int type])

Az OCINewDescriptor() tárterületet foglal le leírók vagy LOB lokátorok tárolására. A type lehetséges értékei OCI_D_FILE, OCI_D_LOB és OCI_D_ROWID. LOB leírók esetén a a load, save és savefile metódusokat használhatod, a BFILE csak a load metódust támogatja. Lásd a második példa használati tippjeit.

Példa 1. OCINewDescriptor

<?php
    /* Ez a program űrlapból történő meghíváshoz készült.
     * A $felhasznalo, $jelszo, $tabla, $where és $commitmeret
     * értékeket várja az űrlapból. A program letörli a kiválasztott
     * sorokat a ROWID felhasználásval, és minden $commitmeret sor
     * után egy tranzakció végrehajtást eszközöl. Használd óvatosan,
     * a műveletek nem visszavonhatóak.
     */
    $conn = OCILogon($felhasznalo, $jelszo);
    $stmt = OCIParse($conn,"select rowid from $tabla $where");
    $rowid = OCINewDescriptor($conn,OCI_D_ROWID);
    OCIDefineByName($stmt,"ROWID",&$rowid);
    OCIExecute($stmt);
    while ( OCIFetch($stmt) ) {
       $sorokszama = OCIRowCount($stmt);
       $delete = OCIParse($conn,"delete from $tabla where ROWID = :rid");
       OCIBindByName($delete,":rid",&$rowid,-1,OCI_B_ROWID);
       OCIExecute($delete);
       print "$sorokszama\n";
       if ( ($sorokszama % $commitmeret) == 0 ) {
           OCICommit($conn);
       }
    }
    $sorokszama = OCIRowCount($stmt);
    print "$sorokszama sor törölve...\n";
    OCIFreeStatement($stmt);
    OCILogoff($conn);
?>
<?php
    /* Ez a program LOB mezőbe állomány feltöltést mutat be.
     * Az űrlapmező, amit a példa feltételez a következő:
     * <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="Feltöltés"> - <input type="reset">
</form>
<?php
  } else {

     // $lob_upload tartalmazza a feltöltött file ideiglenes állomány nevét

     // lásd még az állomány feltöltésről szóló részt biztonságos
     // file feltöltés példák érdekében

     $conn = OCILogon($felhasznalo, $jelszo);
     $lob = OCINewDescriptor($conn, OCI_D_LOB);
     $stmt = OCIParse($conn,"insert into $tabla (id, a_blob) 
               values(my_seq.NEXTVAL, EMPTY_BLOB()) returning a_blob into :a_blob");
     OCIBindByName($stmt, ':a_blob', &$lob, -1, OCI_B_BLOB);
     OCIExecute($stmt, OCI_DEFAULT);
     if($lob->savefile($lob_upload)){
        OCICommit($conn);
        echo "A Blob feltöltése sikeres\n";
     }else{
        echo "Nem sikerült feltölteni a Blobot\n";
     }
     OCIFreeDesc($lob);
     OCIFreeStatement($stmt);
     OCILogoff($conn);
  }
?>

Példa 2. OCINewDescriptor

<?php   
    /* PL/SQL tárolt eljárások hívása, amik clobs bemeneti paramétereket
     * tartalmaznak (PHP 4 >= 4.0.6). 
     *
     * PROCEDURE adat_mentes
     *   Argumentum neve                Típus                   KI/BE  Alapérték
     *   ------------------------------ ----------------------- ------ ---------
     *   KULCS                          NUMBER(38)              BE
     *   ADAT                           CLOB                    BE
     *
     */

    $conn = OCILogon($felhasznalo, $jelszo);
    $stmt = OCIParse($conn, "begin adat_mentes(:kulcs, :adat); end;");
    $clob = OCINewDescriptor($conn, OCI_D_LOB);
	OCIBindByName($stmt, ':kulcs', $kulcs);
	OCIBindByName($stmt, ':adat',  $clob, -1, OCI_B_CLOB);
	$clob->WriteTemporary($adat);
	OCIExecute($stmt, OCI_DEFAULT);
	OCICommit($conn);
	$clob->close();
	$clob->free();
	OCIFreeStatement($stmt);
?>