PHP kézikönyv
Előző |  | Következő

# OCINewDescriptor

(PHP 3 >= 3.0.7, PHP 4, PHP 5)

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);
    ?>

Előző | Tartalom | Következő
OCINewCursor | Fel | OCINLogon